本人在做学生管理系统保存文件时遇到的,开始不会,但在查找了很长时间后,及自己在结合自己代码做了一些修改,终于算是读写成功了,哈哈
//链表保存到文件
students *listtofile_stu(students *phead){
FILE *fp;
students *tmp;
if((fp=fopen("student","wb"))==NULL) /*打开文件*/
{ printf("cannot open file\n");
return 0;
}
for(tmp = phead;tmp != NULL;tmp = tmp->next) /*遍历链表*/
{
fwrite(tmp,sizeof(students),1,fp); /*把数据写入文件*/
}
fclose(fp);
return phead;
}
//从文件读入链表
students *filetolist_stu(){
FILE *fp=NULL;
students *p,*p1;
students *head;
head = (students *)malloc(sizeof(students));
head->next = NULL;
if((fp = fopen("student","rb"))==NULL)
{
printf("cannot open flie\n");
return 0;
}
while(!feof(fp))
{
p = malloc(sizeof(students));
fread(p,sizeof(students),1,fp);
if(head==NULL) {
head=p;
p->next=NULL;
}
else{
p1=head;
while(p1->next!=NULL){
p1=p1->next;
}
}
p1->next = p;
p->next = NULL;
}
fclose(fp);
return head;
}