有关fwrite和fread的问题,不知是那里错了
【目的】将picData的数据写入文件,然后在读出来【问题】最终读出来的数据只是picData的一部分
【详情】根据我的测试,数据应该写进去了(不敢肯定)。但为什么只读出一部分呢,那里错了????大家帮帮忙啊
程序代码:/**
将picData写入文件
*/
int writePic(picDATA *picdata,int length,char *filename)
{
FILE *output = NULL;
int i = 0;
output = fopen(filename,"w");
if(output == NULL)
{
return 0;
}
fwrite(&length,sizeof(int),1,output);
//写入数据
for(i = 0;i<length;i++)
{
fwrite(&(picdata[i].rgb.blue),sizeof(BYTE),1,output);
fwrite(&(picdata[i].rgb.green),sizeof(BYTE),1,output);
fwrite(&(picdata[i].rgb.red),sizeof(BYTE),1,output);
fwrite(&(picdata[i].num),sizeof(WORD),1,output);
}
fclose(output);
return length;
}
/**
读取picData
*/
picDATA * readPic(int *p,char *filename)
{
int length = 0;
int i = 0;
FILE *input = NULL;
picDATA *picData = NULL;
input = fopen(filename,"r");
if(input == NULL)
{
return NULL;
}
fread(&length,sizeof(int),1,input);
picData = (picDATA *)malloc(length*sizeof(picDATA));
for(i = 0;i<length;i++)
{
fread(&(picData[i].rgb.blue),sizeof(BYTE),1,input);
fread(&(picData[i].rgb.green),sizeof(BYTE),1,input);
fread(&(picData[i].rgb.red),sizeof(BYTE),1,input);
fread(&(picData[i].num),sizeof(WORD),1,input);
}
fclose(input);
printpicData(picData,length);
*p = length;
return picData;
}[ 本帖最后由 bookmirror 于 2012-2-24 11:32 编辑 ]








