while(scanf("%d",&n)!=EOF) 输入一个数,循环怎么就结束了

如题所述

其实是有可能输入了非数字,导致死循环了。
EOF是-1。如果scanf用%d扫描到非数字,就会返回0。但是不会消耗掉数据,然后又进来扫描,还是扫描到非数字,你运行一下下面的程序就好了。

#include <stdio.h>
#include <stdlib.h>

int main(int argc,char *argv[])
{
int ret=0;
int n=0;

#if 1
printf("EOF %d\n",EOF);
ret=scanf("%d",&n);
printf("ret %d n=%d\n",ret,n);
while(ret!=EOF)
{
ret=scanf("%d",&n);
printf("ret %d n=%d\n",ret,n);
}
#else
while(scanf("%d",&n)!=EOF);
#endif
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-12
int n;
while(scanf("%d",&n)!=EOF)
printf("%d\n",n);

//按ctrl+z结束循环本回答被网友采纳
第2个回答  2011-09-25
因为CTRL+Z的asc的值就是EOF的值,并不是让你输入“CTRL+Z”字符串,而是按CTRL Z
第3个回答  2011-09-25
EOF是文件结束符,它的值是-1....你输入的是-1?
第4个回答  2011-09-25
输入-1结束

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网