作者:海子 出处:http://www.cnblogs.com/dolphin0520/
C语言文件操作解析(五)之EOF解析
在C语言中,有个符号大家都应该很熟悉,那就是EOF(End of File),即文件结束符。但是很多时候对这个理解并不是很清楚,导致在写代码的时候经常出错,特别是在判断文件是否到达文件末尾时,常常出错。
1.EOF是什么?
在VC中查看EOF的定义可知:
#define EOF (-1)
EOF只是代表一个整形常量-1。因此很多人认为在文件的末尾存在这个结束标志EOF,这种观点是错误的。事实上在文件的末尾是不存在这个标志的。那么有人会问那下面的程序如何解释?
char ch; while((ch=fgetc(fp))!=EOF) { printf("%c\n",ch); }
书上都通过这样的代码去判断是否读取到文本文件末尾,就是当读取到EOF的时候就结束操作。这种理解是错误的。
/*
此段不属于原文内容,添加上去是为了更好补充此处的说明
例如:下面这段这个文本文件的磁盘内容,文件末尾并没有-1.
*/
先看一下函数fgetc的原型:
int fgetc(FILE *fp);
事实上在fgetc函数内部,每次都是读取一个字节的数据,而且这一个字节的