解决方案
因为这句话是 feof
还是(最初)假结束时的文件已经达到--它只有成为真正后的第一次失败的尝试,阅读过的文件。
因此
char mychar;
while(!feof(fileptr))
{
fread(&mychar, sizeof(char), 1, fileptr);
fprintf(stderr, "The char is '%c'.\n", mychar);
}
将处理的一个char太多。
正确的方法是检查返回的价值 fread
(或者任何你们用来读取)或者,呼吁 feof
后 功能,这并阅读。例如:
char mychar;
while(fread(&mychar, sizeof(char), 1, fileptr) > 0)
fprintf(stderr, "The char is '%c'.\n", mychar);
其他提示
谷歌找到这个: http://www.drpaulcarter.com/cs/common-c-errors.php#4.2
它说,"提交人尚未看到任何学生使用的feof()功能的正确!"
要总结,该文件的功能等 fread
和 fwrite
返回状态的价值观无论如何你 <blink>不应该忽视</blink>.检查的价值 feof
是其中的一个螺栓稳定的门后马已经逃离的那种东西。
C常见问题清单具有一个 答案 随着解答许多其他这种经常询问的问题:
在C,文件结束仅仅是指示之后输入程序已试图阅读和失败。
不隶属于 StackOverflow