在 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/