为什么我的C程序即使满足退出条件也不跳出while循环
。。直到我从我的C intepreter停止程序。我不明白为什么它不立即打印,因为为什么我的C程序即使满足退出条件也不跳出while循环,c,loops,C,Loops,。。直到我从我的C intepreter停止程序。我不明白为什么它不立即打印,因为循环中没有更多的迭代,而循环。更好的结束循环条件是 printf("\nThe smallest integer is: %d", smallest); 这意味着while正在成功地读取值 阅读链接了解为什么在使用scanf()时等待EOF是不自然的,因为这样用户就必须按组合键将stdin标记为EOF 这种组合键实际上是如此之快,以至于linux终端Ctrl+D和Windows cmd Windows Ctrl+
循环中没有更多的迭代,而循环。更好的结束循环条件是
printf("\nThe smallest integer is: %d", smallest);
这意味着while正在成功地读取值
阅读链接了解为什么在使用scanf()
时等待EOF
是不自然的,因为这样用户就必须按组合键将stdin
标记为EOF
这种组合键实际上是如此之快,以至于linux终端Ctrl+D和Windows cmd Windows Ctrl+Z的组合键是不同的
如果它不执行printf()
语句,那是因为您需要刷新stdout
,或者在每一行的末尾添加fflush(stdout)
或者在每一行的末尾添加一个'\n'
,在末尾添加一个新行就更自然了,尽管我看到很多人在行尾添加它。更好的结束循环条件,是
printf("\nThe smallest integer is: %d", smallest);
这意味着while正在成功地读取值
阅读链接了解为什么在使用scanf()
时等待EOF
是不自然的,因为这样用户就必须按组合键将stdin
标记为EOF
这种组合键实际上是如此之快,以至于linux终端Ctrl+D和Windows cmd Windows Ctrl+Z的组合键是不同的
如果它不执行printf()
语句,那是因为您需要刷新stdout
,或者在每一行的末尾添加fflush(stdout)
,或者在每一行的末尾添加一个'\n'
,在末尾添加一个新行就更自然了,尽管我看到很多人在行尾添加它。您不能这样使用EOF,因为scanf()在成功读取后返回值1。scanf()不会返回读取的字符。我已经给出了下面的解决方案,我认为它可以按照您的要求工作。对于任何疑问,请在下面进行评论
while (scanf("%d", &value) == 1)
#包括
#包括
int main()
{
int值;
最小整数=最大整数;
printf(“这是一个程序,可以找出您输入的\n个整数的最小值。”);
printf(“请输入这些整数(输入任何其他字符以终止):”;
while(scanf(“%d”&值))
{
如果(value您不能这样使用EOF,因为scanf()在成功读取后返回值1。scanf()不会返回它读取的字符。我在下面给出了解决方案,我认为它可以按照您的要求工作。对于任何查询,请在下面进行注释
while (scanf("%d", &value) == 1)
#包括
#包括
int main()
{
int值;
最小整数=最大整数;
printf(“这是一个程序,可以找出您输入的\n个整数的最小值。”);
printf(“请输入这些整数(输入任何其他字符以终止):”;
while(scanf(“%d”&值))
{
如果(value)尝试在最后一次打印的末尾添加一个\n
如何输入值并发送EOF?EOF是文件的结尾,您不使用文件。您需要一个不同的while
条件。@boh,错误,如果在读取时发生读取错误或到达文件结尾,则设置正确的指示器(feof或FEROR)。并且,如果在成功读取任何数据之前发生任何一种情况,则返回EOF。@AlterMann很高兴知道,谢谢!尝试在最后一次printf
的末尾添加一个\n
如何输入值并发送EOF?EOF是文件的结尾,您不使用文件。您需要一个不同的while
条件。@boh,错误,如果是rea读取时发生数据错误或到达文件末尾,设置了正确的指示器(feof或ferror)。并且,如果在成功读取任何数据之前发生任何一种情况,则返回EOF。@很高兴知道,谢谢!在Windows上,Ctrl-Z
必须后跟ENTER。在我使用while(scanf(“%d”,&value)==1)后,它仍然不会执行最终的printf语句在Windows上,Ctrl-Z
必须后跟ENTER,但在我使用while(scanf(“%d”,&value)==1)之后,它仍然不会执行最终的printf语句。感谢您提供的解决方案,我也做了类似的工作,现在可以工作了。感谢您提供的解决方案,我也做了类似的工作,现在可以工作了。