在C中一次读取一个字段的二进制文件

时间:2016-08-14 02:57:30

标签: c binaryfiles readfile

我正在学习如何处理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 

1 个答案:

答案 0 :(得分:0)

您希望通过魔法解码二进制文件。您需要在字节级别理解二进制文件格式,读取其中的一部分,解码字节,并在结构中适当地设置值。在你的代码中没有任何地方可以解释文件中每个字节的含义,并且知识对于理解文件是必要的。