可能的重复:
为什么这个 C 代码有问题?
确定流结束时出现 EOF 问题
我正在尝试以 4 字节块读取二进制文件。然而,第一个实现(如下所示)将复制最后一个条目,并且只复制最后一个条目。
FILE* f = fopen("test.a", "r+b");
char buffer[4];
while (!feof(f)) {
fread(buffer, 4, 1, f);
printf("read %x\n",*(int*)buffer);
}
fclose(f);
这种替代实现没有这个问题。什么时候应该使用 feof?为什么前面实现中的 feof 会导致最后一个条目被读取两次?有没有比我在 printf 语句中所做的那样转换指针更好的方法来构造缓冲区?这段代码还有什么问题吗?
FILE* f = fopen("test.a", "r+b");
char buffer[4];
while (fread(buffer, 4, 1, f)) {
printf("read %x\n",*(int*)buffer);
}
fclose(f);