据说是 段错误 , 我用的是cfree

*insert(STUDENT *head,STUDENT *new1)
{STUDENT *p0,*p1,*p2;int n=0,i;p1=head; p0=new1; printf("\n 请输入一个新记录\n"); printf(" 输入学号:");scanf("%s",new1->num);printf(" 输入班级:");scanf("%d",&new1->cla); printf(" 输入姓名:");scanf("%s",new1->name);printf(" 输入性别(F OR M):");scanf("%s",&new1->sex); printf(" 输入年龄:");scanf("%d",&new1->age); printf(" 输入所选课程编号(1英语,2数学,3语文,4物理,5化学)");scanf("%d",&new1->course_1);printf(" 输入该科目学分:");scanf("%d",&new1->crehour);printf(" 输入该科目平时成绩:");scanf("%d",&new1->score_1);
printf(" 输入该科目考试成绩:");scanf("%d",&new1->score_2);new1->score_3=int((new1->score_1*0.3)+(new1->score_2*0.7)); new1->order=0; if(head==NULL) {head=p0;p0->next=NULL;} else{while((p0->score_3<p1->score_3)&&(p1->next!=NULL)){p2=p1; p1=p1->next; }if(p0->score_3>=p1->score_3){if(head==p1)head=p0; else p2->next=p0; p0->next=p1;}else{p1->next=p0;p0->next=NULL;} }n=n+1; head=sort(head); printf("\n学生%s记录已插入\n",new1->name);printf("请保存\n");return(head);} STUDENT *modify(STUDENT *head){STUDENT *p; char num[6]; printf("请你输入要修改的学生学号:"); scanf("%s",num); p=head;if(p){ printf(" 请你输入新学号(原来是%s):",p->num); scanf("%s",p->num); printf(" 请你输入新班级(原来是%d):",p->cla); scanf("%d",&p->cla); printf(" 请你输入新姓名(原来是%s):",p->name); scanf("%s",p->name); printf(" 请你输入新性别(原来是%s):",p->sex); scanf("%s",p->sex); printf(" 输入新的年龄(原来是%d):",p->age);scanf("%d",&p->age); printf(" 输入所选课程编号(1英语,2数学,3语文,4物理,5化学)(原来是%d)",p->course_1);scanf("%d",&p->course_1);printf(" 输入该科目学分:(原来是%d)",p->crehour);scanf("%d",&p->crehour);printf(" 请你输入新的平时成绩(原来是%d分):",p->score_1);scanf("%d",&p->score_1); printf(" 请你输入新的考试成绩(原来是%d分):",p->score_2);scanf("%d",&p->score_2); p->score_3=int ((p->score_1*0.3)+(p->score_2*0.7)); printf("\n=====>提示:资料修改成功!\n"); } else printf("\n没有找到数据");return(head);}
最新回答
深蓝菇凉

2024-10-16 05:16:33

C语言的free()函数对应使用的分配为malloc(),
请查找程序中对应的分配内存的函数,检查错误。
程序中建议使用的分配内存使用new,删除使用delete