标题:怎么一直是段错误 (核心已转储)?
只看楼主
堕落之地
Rank: 1
等 级:新手上路
帖 子:57
专家分:5
注 册:2019-3-11
结帖率:100%
已结贴  问题点数:10 回复次数:2 
怎么一直是段错误 (核心已转储)?
#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:一直是段错误 (核心已转储)?
搜索更多相关主题的帖子: data printf puts 学生 输入 
2019-03-23 23:35
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
得分:10 
主要是指针le没指向,将“LNode *le1=NULL,*le2=NULL,*le;”改成“LNode *le1=NULL,*le2=NULL,aaa,*le=&aaa;”就可以正常执行了。

能编个毛线衣吗?
2019-03-24 09:59
堕落之地
Rank: 1
等 级:新手上路
帖 子:57
专家分:5
注 册:2019-3-11
得分:0 
回复 2楼 wmf2014
谢谢大佬,非常感谢。
2019-03-24 10:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-493752-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029574 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved