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

标签 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 

最佳答案

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

关于c - 在C中一次读取一个字段的二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38938761/

相关文章:

C函数原型(prototype)编译错误

node.js - 将本地文件夹中的图像上传到S3

c++ - 设备驱动程序: Windows ReadFile function timeout

applescript - 使用 AppleScript 从 AppleScript 文件 (.scpt) 读取代码

最长公共(public)子序列的代码未正确显示结果

c - 将函数参数保存在结构体数组中

python - 如何使用 Python 打开 Unix 可执行文件?

python - 如何从目录中读取所有 .txt 文件

c - 从文件或路径获取 FILE 扩展名

blob - 二进制文件和 BLOB 之间的区别