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



