通过fread()读取二进制文件

时间:2014-05-30 08:34:19

标签: c

我如何阅读它以便我可以在控制台中看到内容?
我用这种方式:

n = fread(buffer, sizeof(buffer), 1, fp);
printf("0x%x", buffer);

这里我只输出1个字节,但文件包含72个字节。

2 个答案:

答案 0 :(得分:2)

正如Yves Daoust指出的那样,%x格式化程序需要一个字节。循环遍历值将以十六进制打印所有值。

n = fread(buffer, 1, sizeof(buffer), fp);

int i=0;
for(i=0; i<n; i++)
{
    printf("0x%x ", buffer[i]);
}

关于恐惧的附注:

fread的第二个参数是您要读取的每个成员的大小,而第三个参数包含您要读取的数据的总长度(手册页:http://www.manpagez.com/man/3/fread/)尽管它可能没有在这种情况下可见影响,在您的代码示例中,两个参数似乎已被交换。

答案 1 :(得分:0)

%x格式描述符需要单个值,它不处理数组。您需要在循环中逐个打印72个字节。