eof什么意思

在c语言中,或者更准确地说,在c标准函数库中,文件的末尾是用。
在while循环中,eof用作文件的结束符号。以eof作为文件结束符号的文件必须是文本文件。在文本文件中,数据以字符的ascii码值的形式存储。我们知道,ascii码值的范围是0~127,不可能是-1,所以可以用eof作为文件的结束符号。
例子:c语言,输入多组数据,每行两个,然后每行输出一个结果。
输入:测试用例有多行,每行有a和b的值。
输出:输出多行,对应a和b的结果.
样本输入:12
45
69
样本输出:3

15
相信很多朋友在学习c语言的过程中都看到过eof这个词,但是看了整本c语言书却看不到这个函数或者关键字,就很奇怪了。学习上没有遗漏吗?当然不是!在这里,作者告诉你一个窍门。如果你看到一个特殊的字符在读代码的过程中,感觉既不是关键字,也不是函数,你首先要思考的是:这个东西是#define还是typedef?
开门见山,比如acm比赛经常有这样的代码:while(scanf(“%d%d“)!=eof)
这东西是什么意思?首先,scanf,你边写边看很奇怪。新手说没见过这么嵌套的写法。加上eof就更离谱了,人们怀疑这是不是c代码.
我告诉你,首先这段代码scanf可以用while写,因为scanf(“%d%d“)!=eof本身就是一个逻辑判断,即真或假,所以可以写成while作为条件判断。那么主要问题来了。什么是eof?
好了,如果你学的是c语言的宏定义,所有的道理就都出来了,不妨打开我们最常用的stdio.h头文件(不知道怎么打开?只需打开一个包含这个头文件的程序,右键点击),然后搜索eof找到答案!如下:
……怎样?看到了吧,eof其实是-1!
也就是说,eof只是一个数字,定义为-1!
你为什么这么做?stdio.h作为一个标准的输入输出头文件,自然会定义很多标准的东西,所以eof就是为此而诞生的,慢慢听作者说:
当我们使用包括scanf在内的输入函数时,实际上,用户在cmd中的输入实际上是存储在缓冲区中的。当用户输入回车时,先前输入的数据将被存储。在这里,无论是单个字符还是字符串,我们都知道scanf的返回值表示成功接收的对象数。如果有特殊情况,比如缓冲区的文件流满了,scanf会怎么处理?答案是返回-1!这里不仅是scanf,还有一个返回数字的函数。文件流满的时候总会返回-1,所以这个-1用的比较多,所以stdio.h简单的定义一个宏来表示,文件结尾的前三个字母(意思是文件结尾)会形成eof,所以有一个像#defineeof(-1)这样的词!
那么,你现在明白了吗?
c语言研究中心(
c语言网提供“c语言、c语言、算法竞赛”在线课程,全部由r&d高级工程师或acm金奖获得者授课。是比较科学全面的课程体系,通过在线视频在线评价学习,学练同步,拒绝理论流派,真正学习编程!还有奖学金等着你的其他增值福利!c语言网站,版权为原创,除非另有说明。本网站由by-nc-sa协议授权。请注明重现时c语言中的eof是什么意思。
喜欢(260)享受[jinyangh@aliyun.com]分享(0)

展开查看全文
上一篇:力矩单位_力矩计算公式
下一篇:描写黄山风景的优美诗句