EOF是end of file的缩写,在c语言中,用getchar()或者scanf()读取文件检测到结尾,都会返回一个特殊的值,这个返回值就是EOF。EOF定义在头文件stdio.h中:#define EOF (-1) 由于输入字符的返回值通常在0~127间,包括扩展字符集的返回值返回值也只不过在0~255间,也就是说,-1不对应任何字符,故可以标记文件结尾,其实-2或者-3当然也可以,但是c语言中已经规定了。
getchar()返回值为int,把其返回值赋给char类型的数据难免有时会丢失数据,在Linux和unix中,Ctrl+D表示文件结尾,许多微型计算机,包括windows,把Ctrl+Z表示文件结尾,有些系统把任意位置的Ctrl+Z解释成文件结尾信号(Windows下并不是)。
来看 一个小程序:(重复输入,直到文件结尾)
#include<stdio.h>
int main(void)
{
int ch;
while((ch=getchar())!=EOF)
putchar(ch);
return 0;
}
可以利用这个程序来输入一段字符,按回车后,所输入的字符会在下一行原样显示,光标跳转到下一行,等待继续输入,当遇到Ctrl+Z才会结束该循环。