首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

保存bmp文件头的疑问解决办法

2012-04-01 
保存bmp文件头的疑问【疑问】将文件头一起写入得到图片不能正常显示,将其成员一个个写入就不会错,这是为什么

保存bmp文件头的疑问
【疑问】将文件头一起写入得到图片不能正常显示,将其成员一个个写入就不会错,这是为什么?
【详情】bmp文件头结构体:

C/C++ code
typedef struct tagBITMAPFILEHEADER{    WORD bfType;    DWORD bfSize;    WORD bfReserved1;    WORD bfReserved2;    DWORD bfOffBits;} BITMAPFILEHEADER;


这样做会有问题:

C/C++ code
//一起写入就有问题fwrite(bmp->fileHeader,sizeof(BITMAPFILEHEADER),1,output);


这样做不会有问题:

C/C++ code
/***一个个写入不会错*/void writeFileHeader(BITMAPFILEHEADER *fileHeader,FILE *output){    fwrite(&(fileHeader->bfType),sizeof(WORD),1,output);    fwrite(&(fileHeader->bfSize),sizeof(DWORD),1,output);    fwrite(&(fileHeader->bfReserved1),sizeof(WORD),1,output);    fwrite(&(fileHeader->bfReserved2),sizeof(WORD),1,output);    fwrite(&(fileHeader->bfOffBits),sizeof(DWORD),1,output);}


[解决办法]
用winhex对比下写入的buf 就可以得知
[解决办法]
[/code=C/C++]
#pragma pack(push)
#pragma pack(1)

typedef struct tagBITMAPFILEHEADER
{
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER;

#pragma pack(pop)

[/code]

热点排行