C语言和Linux系统中相当常见的一个概念是EOF = End of File,指的是文件的结束标志。
一段典型的C代码如下:
FILE *fp = fopen("file.txt", "r"); while( EOF != getc(fp) ){ // process the data } fclose(fp);
一个可能会的问题是“如果文件中包含有一个EOF字符的话怎么办?”这个问题也经苦恼过自己。
实际上很简单——一个字符是永远不会等于EOF的:
int EOF = -1; int getc(FILE *fp); (char) 0xff = (int) 0x000000ff
一个字符虽然是8bit长度,但在处理过程中却是当作32bit的整数来处理的,因此允许不冲突。
在Linux中,通过标准输入(stdin)输入数据时,可以通过Ctrl+D
输入EOF字符。
在Windows系统中,则可以通过Ctrl+Z
来表示文件结束。