用fread无法正确读取BMP文件头

来源:百度知道 编辑:UC知道 时间:2024/09/20 11:00:37
//读256*256的BMP灰阶图象
#include <stdio.h>
#include <iostream>
#include <windows.h>
using namespace std;
typedef struct tagBMPFILEHEADER

{
char bfType[2];
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
}BMPFILEHEADER;

int main()
{
BMPFILEHEADER bmphead;
FILE *fp;
fp=fopen("pic5.bmp","rb");
if (fp==NULL)
{
cout <<"No such file!"<<endl;
exit(0);
}
fread(&bmphead,sizeof(bmphead),1,fp);
cout <<bmphead.bfType[0]<<bmphead.bfType[1]<<endl;
cout <<bmphead.bfSize<<endl;
cout <<bmphead.bfReserved1<<endl;
cout <<bmphead.bfReserved2<<endl;'
cout <<bmphead.bfOffBits<<endl;
return 0;
}

输出:
BM
1
0
1078
2621440

BMP头是这个格式吗,我查了下好象不对.

要么就是fread不能这么用,你试着不要用结构指针,用普通的char *指针做下.因为它读出的BM是正确的.后面可能是结构不支持.无论怎样fread函数是不会出问题的...

那大概就是fread不支持这样用了.