链表读写文件

来源:互联网 发布:树熊网络登录 编辑:程序博客网 时间:2024/06/03 05:22

本人在做学生管理系统保存文件时遇到的,开始不会,但在查找了很长时间后,及自己在结合自己代码做了一些修改,终于算是读写成功了,哈哈

//链表保存到文件

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;
}
1 0
原创粉丝点击