鱼C论坛

 找回密码
 立即注册
查看: 2594|回复: 2

[已解决]while(scanf("%d',&n)!=EOF)

[复制链接]
发表于 2017-12-9 16:19:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
while(scanf("%d',&n)!=EOF)
这个语句, 具体应该怎么用啊 ?还有就是 ,在什么时候用得上它?
最佳答案
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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-12-9 17:17:59 From FishC Mobile | 显示全部楼层
一般是用于文件信息读取,判断读取是否到达文件末尾
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 02:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表