有关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 编辑 ]