菜鸟关于fread()函数读取结构体的问题
这是一个读入电脑里二进制文件的程序,然后把文件里的数据存入一个结构体中,再把其中的元素按一定顺序打印出来。二进制文件的存储方式是一个char一个int这样,代码如下:
#include "stdafx.h"#include <stdlib.h>struct lyrics{ char character; int order;}lyc[2506],temp;int _tmain(int argc, _TCHAR* argv[]){ FILE *fp; int i,j,k; if((fp=fopen("d:\\a\\Encode2.da","rb"))==NULL){ printf("file open error.\n"); exit(0); } for(i=0;i<2507;i++){ fread(&lyc[i].character,1,1,fp); //主要是这里 fread(&lyc[i].order,4,1,fp); } for(j=0;j<i-1;j++){ for(k=j;k<i;k++){ if(lyc[k].order<lyc[j].order){ temp=lyc[k]; lyc[k]=lyc[j]; lyc[j]=temp; } } } for(j=0;j<i;j++) printf("%c",lyc[j].character); printf("\n"); fclose(fp); return 0;}
for(i=0;i<2507;i++){ fread(&lyc[i],sizeof(struct lyrics),1,fp);}