Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的C程序即使满足退出条件也不跳出while循环_C_Loops - Fatal编程技术网

为什么我的C程序即使满足退出条件也不跳出while循环

为什么我的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+

。。直到我从我的C intepreter停止程序。我不明白为什么它不立即打印,因为
循环中没有更多的迭代,而
循环。

更好的结束循环条件是

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语句。感谢您提供的解决方案,我也做了类似的工作,现在可以工作了。感谢您提供的解决方案,我也做了类似的工作,现在可以工作了。