另一个问题, 杰里的棺材 指出以下几点:

它的(可能)不真正相关的问题,但是 while (!feof(fileptr)){ 是相当多的有保证的错误。

我想我会开始一个单独的问题,因为这一评论是有点离题。有人能解释这样对我?这是第一个计划我已经写在直C之前。

有帮助吗?

解决方案

因为这句话是 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()功能的正确!"

要总结,该文件的功能等 freadfwrite 返回状态的价值观无论如何你 <blink>不应该忽视</blink>.检查的价值 feof 是其中的一个螺栓稳定的门后马已经逃离的那种东西。

C常见问题清单具有一个 答案 随着解答许多其他这种经常询问的问题:

在C,文件结束仅仅是指示之后输入程序已试图阅读和失败。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top