vc2008 读取bmp有关问题
vc2008 读取bmp问题 求助
#include<stdio.h>
typedef struct tagBITMAPFILEHEADER//
{
unsigned int type;//文件类型是否为BMP文件
unsigned long size;//文件大小,以字节为单位
unsigned int reserverd1;//文件保留字,必须为0
unsigned int reserverd2;//文件保留字,必须为0
unsigned long bfOffBits;//文件头的偏移量表示,以字节为单位
}BITMAPFILEHEADER;
typedef struct tagBITMAPINFOHEADER
{
int bisize;//本结构大小字节为单位
int width;//图形宽度以象素为单位
int height;//图形高度以象素为单位
int planes;//目标设备的级别,必须为1
int bitcount;//每个象素所需要的位数
int SizeImage; // 位图的大小,以字节为单位
int compression;//是否为压缩
int xpermeter;//位图水平分辨率,每米像素数
int ypermeter;// 位图垂直分辨率,每米像素数
int ClrUsed;// 位图实际使用的颜色表中的颜色数
int ClrImportant;// 位图显示过程中重要的颜色数
}BITMAPINFOHEADER;
typedef struct bmp
{
BITMAPFILEHEADER file;//文件信息区
BITMAPINFOHEADER info;//图象信息区
char *buffer;//存放BMP位图内存的指针
}bmp;
bmp readbmpfile(void);//函数声明
void main()
{
bmp m;
m=readbmpfile();//读取一个位图
}
bmp readbmpfile(void)
{
bmp m;//定义一个位图结构
FILE *fp;
if((fp=fopen("d:\\1.bmp","r"))==NULL)
{
printf("不能打开该文件\n");
//exit(0);
}
else
{
fread(&m.file.type,sizeof(int),1,fp);
printf("类型为%d\n",m.file.type);
fread(&m.file.size,sizeof(long),1,fp);
printf("文件长度为%d\n",(int)(m.file.size));
fread(&m.file.reserverd1,sizeof(int),1,fp);
printf("保留字1为%d\n",m.file.reserverd1);
fread(&m.file.reserverd2,sizeof(int),1,fp);
printf("保留字2为%d\n",m.file.reserverd2);
fread(&m.file.bfOffBits,sizeof(long),1,fp);
printf("偏移量为%d",(int)m.file.bfOffBits);
}
return m;
}
运行的时候提示The variable 'm' is being used without being initialized。
m明明是已经定义了,不知道为什么还会有问题,难道是vc2008的原因?求解答
------解决方案--------------------
运行的时候提示The variable 'm' is being used without being initialized。
他的意思是该m变量没有初始化就被使用了,应该是waring信息吧。。。
------解决方案--------------------
else中如下改
#include<stdio.h>
typedef struct tagBITMAPFILEHEADER//
{
unsigned int type;//文件类型是否为BMP文件
unsigned long size;//文件大小,以字节为单位
unsigned int reserverd1;//文件保留字,必须为0
unsigned int reserverd2;//文件保留字,必须为0
unsigned long bfOffBits;//文件头的偏移量表示,以字节为单位
}BITMAPFILEHEADER;
typedef struct tagBITMAPINFOHEADER
{
int bisize;//本结构大小字节为单位
int width;//图形宽度以象素为单位
int height;//图形高度以象素为单位
int planes;//目标设备的级别,必须为1
int bitcount;//每个象素所需要的位数
int SizeImage; // 位图的大小,以字节为单位
int compression;//是否为压缩
int xpermeter;//位图水平分辨率,每米像素数
int ypermeter;// 位图垂直分辨率,每米像素数
int ClrUsed;// 位图实际使用的颜色表中的颜色数
int ClrImportant;// 位图显示过程中重要的颜色数
}BITMAPINFOHEADER;
typedef struct bmp
{
BITMAPFILEHEADER file;//文件信息区
BITMAPINFOHEADER info;//图象信息区
char *buffer;//存放BMP位图内存的指针
}bmp;
bmp readbmpfile(void);//函数声明
void main()
{
bmp m;
m=readbmpfile();//读取一个位图
}
bmp readbmpfile(void)
{
bmp m;//定义一个位图结构
FILE *fp;
if((fp=fopen("d:\\1.bmp","r"))==NULL)
{
printf("不能打开该文件\n");
//exit(0);
}
else
{
fread(&m.file.type,sizeof(int),1,fp);
printf("类型为%d\n",m.file.type);
fread(&m.file.size,sizeof(long),1,fp);
printf("文件长度为%d\n",(int)(m.file.size));
fread(&m.file.reserverd1,sizeof(int),1,fp);
printf("保留字1为%d\n",m.file.reserverd1);
fread(&m.file.reserverd2,sizeof(int),1,fp);
printf("保留字2为%d\n",m.file.reserverd2);
fread(&m.file.bfOffBits,sizeof(long),1,fp);
printf("偏移量为%d",(int)m.file.bfOffBits);
}
return m;
}
运行的时候提示The variable 'm' is being used without being initialized。
m明明是已经定义了,不知道为什么还会有问题,难道是vc2008的原因?求解答
------解决方案--------------------
运行的时候提示The variable 'm' is being used without being initialized。
他的意思是该m变量没有初始化就被使用了,应该是waring信息吧。。。
------解决方案--------------------
else中如下改
- C/C++ code
fread(&m.file,sizeof(BITMAPFILEHEADER),1,fp); fread(&m.info,sizeof(BITMAPINFOHEADER),1,fp); m.buffer = new char[m.info.width*m.info.height*m.info.bitcount/8]; fread(&m.buffer,1,m.info.width*m.info.height*m.info.bitcount/8,fp);