大家在C/C++的学习训练中,会看到EOF这个东西,但在常见的教材上往往没有EOF这样的写法,下面为大家详细介绍
首先大家明确一点,教材上没有,并不是没有给大家讲解完整,大家应该借助我们学习的语法来理解这个东西是什么EOF,如果完整学习过C语言,看到三个大写字母,你首先应该联想到C语言当中的宏定义,因为宏定义有个不成文的规定,那就是宏名往往是大写,因此我们就可以按照这个思路,在编译器当中查找这个宏定义是否存在来验证。笔者这里以VC6编译器为例,可以随便写一个包含stdio.h这个头文件C语言的代码,鼠标光标移动至这个头文件这里点击鼠标右键,打开stdio.h这个头文件,如图:
打开头文件之后,为了快速找到我们可以搜索一下EOF这个关键词,如下图:
怎么样,可以快速找到EOF的定义,果然是一个宏定义对不对?!
这下大家就明白了吧! EOF本身就是一个-1的常量! 通过宏定义起了一个别名而已!
为什么叫EOF是因为文件末尾的英文翻译过来是End of File,因此取前三个字母就是EOF了!所以EOF通常用来表示已经到达文件末尾的意思。
那么相应的,在ACM或蓝桥杯等程序竞赛中,大家在经常会看到类似while(scanf("%d",&a)!=EOF)这样的代码的时候也就明白什么意思了吧!
很明显,是通过判断scanf的返回值与-1相比作为while的循环条件,不断的接收用户从键盘输入的值来达到效果。
怎么样,大家理解学会了吗?
本文固定URL:https://www.dotcpp.com/qa/2
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程