大家帮我看看这个读写bmp文件程序哪里出问题了,谢谢啦
我的目的是想从一个bmp文件中读出数据,然后再写进另一文件中,但是好像在读、写图像数据块的时候出了问题,我不知道怎么改,调试不过去,请大虾帮帮忙,谢谢!!
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//定义bmp文件结构
typedef struct tagBITMAPFILEHEADER{
unsigned short byType;
long bfSize;
unsigned short bfReserved1;
unsigned short bfReserved1;
unsigned long bfOffBits;
}BITMAPFILEHEADER;
typedef struct tagBIPMAPINFOHEADER{
unsigned long bfSize;
long biWidth;
long biHeight;
unsigned short biPlanes;
unsigned short biBitCount;
unsigned long biCompression;
unsigned long biSizeImage;
long biXPelsPerMeter;
long biYPelsPerMeter;
unsigned long biClrUsed;
unsigned long biClrImportant;
}BITMAPINFOHEADER;
typedef struct tagRGBQUAD{
unsigned char rgbBlue;
unsigned char rgbGreen;
unsigned char rgbRed;
unsigned char rgbReserved;
}RGBQUAD;
typedef struct tagBITMAPINFO{
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];
}BITMAPINFO;
typedef unsigned char BYTE;
int main(void)
{
BITMAPINFO bmpInfo;
BITMAPFILEHEADER bmpHead;
FILE* fa,*fs;
char* file_app="1.bmp";//目的文件
char* file_source="lena.bmp";//源文件
if((fs=fopen(file_source,"rb"))==NULL)
{
fprintf(stdout,"can not open the source file\n");
exit(1);
}
if((fa=fopen(file_app,"wb"))==NULL)
{
fprintf(stdout,"can not open the append file\n");
exit(1);
}
fread(&bmpHead,sizeof(BITMAPFILEHEADER),1,fs);
fwrite(&bmpHead,sizeof(BITMAPFILEHEADER),1,fa);
fread(&bmpInfo,sizeof(BITMAPINFO),1,fs);
fwrite(&bmpInfo,sizeof(BITMAPINFO),1,fa);
long lfileSize=bmpHead.bfSize-bmpHead.bfOffBits;
BYTE temp[lfileSize];
fread(temp,sizeof(char),lfileSize,fs);
fwrite(temp,sizeof(char),lfileSize,fa);
return 0;
}