#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,这是好的,并且“我”采用类似196540的随机值,并且我不明白为什么。所以,如果我读了第一个值,一切都很好。如果我读了前两个值,最后一个值是好的,但第一个修改后,它变成了随机的一个,像196540阅读二进制文件问题
为什么在读'字节'大小的值时使用'int'变量?什么是你使用的平台上的'sizeof(int)'? –
我怀疑通过'fread(sig,sizeof(sig),1,f)'读取'unsigned char sig [2]''会更接近你想要的东西,尽管你可能想花时间去阅读[整个标题](https://en.wikipedia.org/wiki/BMP_file_format#Bitmap_file_header)。 – WhozCraig
应该检查返回的值(不是调用'fopen()'和'fread()'的参数值,以确保操作成功。 – user3629249