#include <stdio.h>#include <windows.h>// EOF是文件结束符 int main(void){FILE *fp;int ch;//char ch;int i = 0;if((fp = fopen("D:\\file.txt", "rb")) == NULL){printf("open error\n");exit(0);}while(!feof(fp)){ch = fgetc(fp);printf("%d,", ch); i++;}printf("\n");rewind(fp);while((ch = fgetc(fp)) != EOF){printf("%d,", ch);i--;}printf("\ni = %d\n", i); // 1 return 0;}
执行结果如下:(最后一个-1就是EOF转换成整型的值)
可见打印出来的结果虽然是一样但是feof的循环比EOF的多一次,即feof函数不是一读到EOF就返回0,而是将EOF读完后再返回0,但是EOF是一个特殊的字符所以不能输出所以是不会影响打印的结果的