#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