void save_list(Mylist *head)
{
FILE *fp=fopen("save.dat","ab+");
Mylist *p=head;
while(p!=NULL)
{
fwrite(p,sizeof(Mylist),1,fp);
p=p->next;
}
fclose(fp);
}
Mylist *load_list()
{
Mylist *head,*p;
head=(Mylist *)malloc(sizeof(Mylist));
p=(Mylist *)malloc(sizeof(Mylist));
p->next=NULL;
int fd;
FILE *fp=fopen("save.dat","rb+");
if(fp==NULL)
{
return NULL;
}
fd=fread(head,sizeof(Mylist),1,fp);
if(fd==0)
{
return NULL;
}
while(!feof(fp))
{
fd=fread(p,sizeof(Mylist),1,fp);
if(fd==0)
{
return NULL;
}
p=p->next;
p->next=NULL;
}
fclose(fp);
return head;
}
想把链表保存进文件中,系统编译时没问题,第一次运行也没问题,就是第二次运行的时候就有问题了,会段错误。
大神帮我看看这代码有什么错误
{
FILE *fp=fopen("save.dat","ab+");
Mylist *p=head;
while(p!=NULL)
{
fwrite(p,sizeof(Mylist),1,fp);
p=p->next;
}
fclose(fp);
}
Mylist *load_list()
{
Mylist *head,*p;
head=(Mylist *)malloc(sizeof(Mylist));
p=(Mylist *)malloc(sizeof(Mylist));
p->next=NULL;
int fd;
FILE *fp=fopen("save.dat","rb+");
if(fp==NULL)
{
return NULL;
}
fd=fread(head,sizeof(Mylist),1,fp);
if(fd==0)
{
return NULL;
}
while(!feof(fp))
{
fd=fread(p,sizeof(Mylist),1,fp);
if(fd==0)
{
return NULL;
}
p=p->next;
p->next=NULL;
}
fclose(fp);
return head;
}
想把链表保存进文件中,系统编译时没问题,第一次运行也没问题,就是第二次运行的时候就有问题了,会段错误。
大神帮我看看这代码有什么错误

