我正在学习如何在C中处理文件。当我尝试读取二进制文件时,一切运行正常,但是我得到了垃圾输出。
这是我的代码:
FILE *ptr;
struct file rec;
ptr=fopen("sample.bin","rb");
while(!feof(ptr))
{
fread(&rec,sizeof(struct file),1,ptr);
printf("%d, %d, %d, %d, %f, %x, %s, %f, %c, %d, %u, %d, %x, %d, %d, %u, %f\n",
rec.a, rec.b, rec.c, rec.d, re.e, rec.f,rec.g, rec.h, rec.i, rec.j, rec.k, rec.l,rec.m, rec.n, rec.o, rec.p, rec.q);
}
所以我想我可能需要使用多个
fread()
。有人可以告诉我如何使用它吗?注意:这是sample.bin的样子:
0000 0000 0101 002f 1000 0000 00f4 0d0a
4540 8f94 e9ff ffff ffff 636c 6f63 6b00
00c0 ece0 3b69 b736 a1ea ffff ffff 2700
0000 0000 8dcb 0cce 0301 7294 cc02 0000
0000 0000 42bf
最佳答案
您期望二进制文件会被魔术解码。您需要了解字节级别的二进制文件格式,读取其中的一部分,解码字节,并在结构中适当设置值。在您的代码中,没有任何地方可以解释文件中每个字节的含义,并且必须具备知识才能理解文件。
关于c - 在C中一次读取一个域的二进制文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38938761/