怎么一直是段错误 (核心已转储)?
#include<stdio.h>#include<stdlib.h>
typedef struct{
char no[8]; //8位学号
char name[20]; //姓名
int price; //成绩
}Student;
typedef struct LNode{
Student data; //数据域
struct LNode *next; //指针域
}LNode,*LinkList;
//LinkList le;
LNode *le1=NULL,*le2=NULL,*le;
int main(){
static int x;
int a,i;
printf("\n********************************\n\n");
puts("1. 构造链表表");
puts("2. 录入学生信息");
puts("3. 显示学生信息");
puts("4. 输入姓名,查找该学生");
puts("5. 显示某位置该学生信息");
puts("6. 在指定位置插入学生信息");
puts("7. 在指定位置删除学生信息");
puts("8. 统计学生个数");
puts("0. 退出");
printf("\n********************************\n\n");
while(1){
printf("请输入选择:");
scanf("%d",&a);
switch(a){
case 1:{
printf("请输入学生个数:");
scanf("%d",&x);
le1=(LNode *)malloc(sizeof(LNode));
le2=le1;//保存第一个节点地址。
for(i=0;i<x;i++){
if(le1!=NULL){
le->next=le1;
le=le1;
}
else {printf("创建链表失败!");
break;
}
le1=(LNode *)malloc(sizeof(LNode));
}
free(le1);//释放无用的地址
((*le).next)=NULL;//最后节点next内容为空。
le->next=le2;
break;
}
case 2:{
for(i=0;i<x;i++){
printf("请输入学生姓名:");
scanf("%s",le->next->data.name);
printf("请输入学生学号:");
scanf("%s",le->next->data.no);
printf("请输入学生成绩:");
scanf("%d",&(le->next->data.price));
le1=le->next;
le=le1;
}
printf("输入信息完毕!");
break;
}
case 3:{
for(i=0;i<x;i++){
printf("第%d个学生姓名:%s,学号:%s,成绩:%d\n",(i+1),le->data.name,le->data.no,le->data.price);
}
break;
}
//case 4:{
//char b[];
//printf("请输入查找学生的姓名:");
//scanf("%s",b);
//for(i=0;i<x;i++){
//}
}
}
}
在case 1:一直是段错误 (核心已转储)?