fread读出用fwrite写进去的结构体文件,为什么只读出来一部分?
结构体:
struct position//密文
{
int row;//行
int line;//列
char letter; //字母本身
struct position *next;//连接
};
定义:struct position*arr[52];
写入:
FILE*code;
code=fopen("code.txt","w+");
for(i=0;i<52;i++)//每个结点逐个插入
{
p=*(arr+i);
while(p!=NULL)
{
fwrite(p,sizeof(struct position),1,code);
p1=p;
p=p->next;
free(p1);
}
}
fclose(code);
读出:
FILE*code;
code=fopen("code.txt","r+");//打开密文文件
while(!feof(code))
{
if((p=(struct position*)malloc(sizeof(struct position)))==NULL)
{
printf("内存不足,请释放内存后重试!");
}
memset(p,0,sizeof(struct position));//清空链表
if(fread(p,sizeof(struct position),1,code))
{
p->next=NULL;//指针初始化
if(p->letter>= 'A'&&p->letter<= 'Z')//大写字母
{
i=p->letter-'A';
*(arr+i)=Insert(*(arr+i),p);
}
else if(p->letter>= 'a'&&p->letter<= 'z')//小写字母
{
i=p->letter-'a'+26;
*(arr+i)=Insert(*(arr+i),p);
}
}
}
fclose(code); //关闭文件