关于EOF的个人理解(小白向)

上上周社团的课讲到了一个叫EOF的东西,但是我没去听,所以只能自己来理解了,具体代码如下

while(scanf("%d %d",&a,&b) != EOF)

去查了很多资料,发现都讲的太深入了(涉及很多概念),可能不太好理解,我这里不讲深入的,直接用通俗易懂的语言来讲讲这行代码到底发生了什么吧!

首先来说说EOF
EOF是End Of File的缩写,C语言里EOF这玩意被宏定义为-1,stdio.h的头文件里就包含了这个定义,如果宏定义没学,那就记着EOF就等于-1(虽然我这样说可能会被打==,因为还不够严谨)

再来说说scanf()的函数
·它的读取数据的规则如下(先记着)!!!
如果a和b能够被成功读入,那么scanf的返回值就是2
如果只有a被成功读入,返回值为1
如果a和b都未被成功读入,返回值为0
如果遇到错误或遇到EOF,返回值有符号数时为-1

因此scanf()本身就是这个逻辑判断,能返回逻辑值给while,所以while里可以有scanf函数,因此这行代码的意思就是当while不等于EOF时候一直做循环

整一行代码来解读
scanf函数还有个读取规则就是遇到了空格或回车或非法输入才结束一个数据的输入,也就是说当你输入了第一个数据按下了一个空格或者回车,一个数据就存入了,它就会接着存第二个数据,第二个数据输入完了,在按下第二个空格或者回车,那么这时候数据存完了,这时候返回一个值,那就是2,2不等于EOF,因此开始做循环,做完了循环之后还是没跑出while,因为你刚刚的值为2,这时候我们开始输入新的数据,又会产生新的返回值,while又开始做循环!!!如果不得到EOF那就跳不出去while循环

那么什么时候才能得到EOF呢?答案是用<Ctrl + z>组合键然后按 Enter 键的方式来告诉系统已经到了EOF,这样系统就会结束while啦!

这行代码的功能
所以,这行代码就可以输入多组数据并且每次将每组数据用来搞别的事情,具体看我之后的A+B题库的理解!

第一次写博客还不太熟悉csdn里的markdown,写到了2点也是没谁了,所以排版不太行请谅解,貌似这里的markdown是内嵌了html,以后会好好学习使用的!晚安!

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值