another question 上,Jerry Coffin 指出以下几点:



我想我会开始一个单独的问题,因为该评论有点偏离主题。有人可以向我解释一下吗?这是我之前用直接 C 编写的第一个程序。

最佳答案

这个语句的原因是当到达文件末尾时 feof 仍然(最初)为假——只有在第一次尝试读取文件末尾失败后才变为真。

因此

char mychar;
while(!feof(fileptr))
{
    fread(&mychar, sizeof(char), 1, fileptr);
    fprintf(stderr, "The char is '%c'.\n", mychar);
}

将处理一个字符太多。

正确的方法是检查 fread(或您用来读取的任何函数)的返回值,或者在执行读取的函数之后调用 feof。例如:
char mychar;
while(fread(&mychar, sizeof(char), 1, fileptr) > 0)
    fprintf(stderr, "The char is '%c'.\n", mychar);

关于c - 为什么这个 C 代码有问题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1588336/

10-11 21:17