小苏打的大世界 发表于 2014-9-21 11:33:26

帮我看看这个写入和输出的文件

void Write_file(MES * head)
{
        MES *p;
        FILE *fp;

        if ((fp = fopen("学生学籍管理系统.dat", "wb")) == NULL)
        {
                printf("无法打开文件!");
                exit(0);
        }

        for (p = head->next; p != NULL; p = p->next)
        {
                fwrite(&p,sizeof(MES),1,fp);
        }
        fclose(fp);
        pritnf("数据已存入\n");
}

// 显示数据
void Read_file(MES * head)
{
        MES *p;
        FILE *fp;

        if ((fp = fopen("学生学籍管理系统.dat", "rb")) == NULL)
        {
                printf("无法打开文件!");
                exit(0);
        }

        for (p = head->next; p != NULL; p = p->next)
        {
                fread(&p, sizeof(MES),1,fp);

        if (p = NULL)
                fread(&p,sizeof(MES),1,fp);
        }

        fclose(fp);

        for (p = head->next; p != NULL; p = p->next)
        {
                printf("学号:%d\n", p->student_data.num);
                printf("姓名:%s\n", p->student_data.name);
                printf("性别:%s\n", p->student_data.sex);
                printf("年龄:%d\n", p->student_data.age);
                printf("籍贯:%s\n", p->student_data.nativeplace);
                printf("系别:%d\n", p->student_data.department);
                printf("专业:%s\n", p->student_data.major);
                printf("班级:%s\n", p->student_data.classs);
        }
}
前面的链表都没有问题,每次到显示输出时都出现vc停止工作, 这两个子函数 哪里错了吗

小苏打的大世界 发表于 2014-9-21 11:34:14

MES 是一个链表

漩涡鸣人 发表于 2014-9-21 13:35:54

      
if (p = NULL)
    fread(&p,sizeof(MES),1,fp);

这句有问题,p=NULL直接赋值成空指针了,再执行p = p->next就崩溃了

小苏打的大世界 发表于 2014-9-21 14:40:04

漩涡鸣人 发表于 2014-9-21 13:35
这句有问题,p=NULL直接赋值成空指针了,再执行p = p->next就崩溃了

对对对,但是如果要改要怎么改呢, 如果只有一个数据的话
页: [1]
查看完整版本: 帮我看看这个写入和输出的文件