从二进制文件问题中读取

时间:2016-12-31 01:00:53

标签: c file binary

#include <stdio.h>


int main()
{
    int i,j;
    FILE *f;
    f=fopen("./pathto/sth.bmp","rb");
    fread(&i,1, 1, f);
    printf("%d ",i);
    fread(&j,1, 1, f);
    printf("%d ",j);

  return 0;
}   

我想从bmp文件中读取前2个值。我知道他们是66岁和77岁。问题是,如果我只读取第一个值,变量“i”变为66,这是好的。但是,如果我读第二个值,作为“j”,那么“j”变为77这是好的,而“i”取一个类似于196540的随机值,我不明白为什么。所以,如果我读到第一个值,一切都还可以。如果我读了前2个值,那么最后一个值是好的,但是第一个修改了,它变成了一个随机的,就像196540

1 个答案:

答案 0 :(得分:3)

当我尝试你的程序时,我得到两个变量的垃圾结果。

问题是你使用了错误的类型变量。您正在从文件中读取单个字节,但您正在将其读入int变量,该变量是多个字节。因此,这将文件中的单个字节与变量的初始值中的任何随机数据组合在一起。

将其声明为char而不是int

#include <stdio.h>

int main()
{
    char i,j;
    FILE *f;
    f=fopen("sth.bmp","rb");
    fread(&i,1, 1, f);
    printf("%d ",i);
    fread(&j,1, 1, f);
    printf("%d\n",j);

  return 0;
}