链表文件的读取和保存问题
想了一整天,实在想不出到底哪里有问题了
输出结果:
ID:1,a
ID:2,b
ID:3,c
ID:-842150451,屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯 //为什么会出来这个
保存/读取函数:
程序代码:void save_bin(Book *head){
//将链表中的所有数据以二进制保存在文件目录
//参数:头指针
FILE *fp=fopen("save","wb");
Book *p=head; //Book是一个typedef声明的结构体
if(!fp){
printf("生成文件失败!\n");
PAUSE;
return ; //返回原函数
}
else
while(p){
fwrite(p,sizeof(Book),1,fp);
p=p->next;
}
printf("文件保存成功!\n");
fclose(fp); //关闭文件,并保存
PAUSE; //#define PAUSE system("pause")
}
//读取函数
void load_bin(Book *head){
Book *p1=head,*p2;
FILE *fp=fopen("save","rb");
if(!fp)
printf("读取文件失败!\n");
else{
while(1){
if(fread(p1,sizeof(Book),1,fp)!=1)
break;
p2=malloc(sizeof(Book));
p1->next=p2;
p1=p2;
}
p1->next=NULL;
fclose(fp);
printf("读取文件成功!\n");
PAUSE;
}
}
[ 本帖最后由 FireRabbit 于 2015-10-3 10:56 编辑 ]









该有的已经注释了,全部代码很长,只截取了有用的部分