先看MSDN中对EOF的定义:
EOF is returned by an I/O routine when the end-of-file (or in some cases, an error) is encountered.(当碰到文件结束符时,输入输出函数返回值为EOF)
C语言中,文件结束符并不是一个实实在在存在的东西(可以认为就是EOF),这是一个标志:若读取到文件末尾的时候,即没有数据可供读取的时候,读文件函数(fgets, fgetc等)就会返回EOF值。
C语言中,EOF是个宏,在stdio.h文件中进行定义:
#define EOF (-1)
即:EOF就是整型数-1。(返回EOF即返回整形数-1)
我们写程序,可以通过判断读文件函数的返回值,来判断是否到了文件尾。
C语言中,标准输入也是一种特殊的文件,但这个"文件”并没有具体的结束位置,所以,只能人为的创造结束位置 :
windows下,在输入的空行位置,按ctrl+z可产生EOF
linux下,在输入时,按ctrl+d可产生EOF
因此可利用EOF来进行循环的中止,例如:
while( scanf("%d", a) != EOF)
{}
while( getchar() != EOF)
{}
即当没有标准输入(键盘输入缓冲区)时循环结束