|
发表于 2017-12-9 18:07:44
|
显示全部楼层
本楼为最佳答案
本帖最后由 lyjlyj 于 2017-12-9 18:30 编辑
EOF在操作文件中,表示的是-1
在scanf("%d',&n)!=EOF中,EOF表示的是ctrl+z(windows系统中,其他系统可能不一样)
scanf("%d',&n)!=EOF这样的判断条件不太理想,scanf是冲缓冲区中读取内容,scanf("%d',&n)很显然需要输入的是一个整型数据,
但 当你输入的是字母时,scanf会从缓冲区中读出字母,发现不是需要的数据,就会把数据放回到缓冲区中,然后又读取,还是读到
原 来的数据,就会出现死循环。如果读到的是需要的整型,就会从缓冲区中删除掉读出的数据下次读的时候会读取下一个数据
建议改为scanf("%d“,&n)!=1;
具体用法就是:比如你要求输入你一个整型数,如果不是整形数,而是一串字母,就要别人继续输入,就可以使用这个作为条件
关于scanf的返回值问题:1.返回的是读取正确的个数,如i=scanf(”%d%d%d“,&a,&b,&c);
如果输入:1 2 3,则i=3;如果输入1 a b,就会返回1;如果是1 1 a,就会返回2;如果输入为 a 111,则返回0
2.如果你输入ctrl+z,就会返回EOF,我打印出来是16 |
|