关于#c语言#的问题:求解决

我想写一个学生考勤管理系统,在其中我使用了链表和文件,在写读取函数的时候测试出错了,读取不成功,弹出了如下窗口

img

之后按照我在网上找到的解决方法试着把debug模式改成release模式,虽然不会报错但是程序直接中止了

struct student *load(){
    FILE *wenjian;
    struct student *head,*p,*q;
    head=p=(struct student *)malloc(sizeof(struct student));
    if((wenjian=fopen("档案.txt","r"))==NULL)    //用r(只读)的方式打开文件
        {    
            printf("文件打开失败\n");           
            exit(0);
        }
    while(feof(wenjian)==0)               //feof判断文件是否结束
    {    
        q=(struct student *)malloc(sizeof(struct student));        //新建一个节点
        fscanf(wenjian,"%s %d %d %d %s %s",q->name,&q->yue,&q->ri,&q->ke,q->class_name,q->type);//把从文件中读取到的数据,写入新建的节点中
        p->next=q;                            
        p=q;                                
    }
    fclose(wenjian);
    printf("数据读取成功!\n");
    p->next=NULL;                //给链表封口.
    return head;
}

求告知如何解决

该回答引用ChatGPT
参考下面的解释
该错误通常是由于指针问题导致的。建议检查链表指针是否正确,并确保链表是否正确分配内存。