eof什么意思
在c语言中,或者更准确地说,在c标准函数库中,文件的末尾是用。
在while循环中,EOF用作文件的结束符号。以EOF作为文件结束符号的文件必须是文本文件。在文本文件中,数据以字符的ASCII码值的形式存储。我们知道,ASCII码值的范围是0~127,不可能是-1,所以可以用e of作为文件的结束符号。
例子:C语言,输入多组数据,每行两个,然后每行输出一个结果。
输入:测试用例有多行,每行有a和b的值。
输出:输出多行,对应a和B的结果.
样本输入:1 2
4 5
6 9
样本输出: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,所以有一个像#define EOF (-1)这样的词!
那么,你现在明白了吗?
c语言研究中心(
C语言网提供“C语言、C语言、算法竞赛”在线课程,全部由R&D高级工程师或ACM金奖获得者授课。是比较科学全面的课程体系,通过在线视频在线评价学习,学练同步,拒绝理论流派,真正学习编程!还有奖学金等着你的其他增值福利!c语言网站,版权为原创,除非另有说明。本网站由BY-NC-SA协议授权。请注明重现时C语言中的EOF是什么意思。
喜欢(260)享受[jinyangH@aliyun.com]分享(0)