运行后每次输入完名字就崩溃了,麻烦大神给解答以下,万分感谢

Primit_ 2019-02-17 06:19:31

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

typedef struct{
char names[100];
char sex;
int stu_age;
int stu_id;
int stu_score;
}student;

void Welcome(); //欢迎界面

int menu(); //功能菜单

student* addStu(student *); //增加新的学生

void DeleStu(); //删除学生

void ChangeStu(); //修改学生

void FindStu(); //查找学生,并输出学生的信息

void Dis_stu(); //浏览全部的学生

void Sort_stu(); //按照学生的产成绩进行排序,输出结果

void SaveStuDentFile(); //保存学生信息到文件中

void readStuDentput(); //运行前把文件内容读取到电脑内存中去

int err_mess(); //用于返回保存学生时的出错信息

void end_Program(); //用于程序结束界面



int choice;
student *s;

int main()
{
Welcome();
Sleep(1000);
menu();
student *stu;
while(1)
{
switch(choice)
{
case 1:
system("CLS");
printf(" *****添加学生的信息***** ");
Sleep(500);
stu = addStu(stu);
menu();
break;
case 2:
system("CLS");
printf(" *****修改学生的信息***** ");
Sleep(1000);
menu();
break;
case 3:
system("CLS");
printf(" *****查找学生的信息***** ");
Sleep(1000);
menu();
break;
case 4:
system("CLS");
printf(" *****删除学生的信息***** ");
Sleep(1000);
menu();
break;
case 5:
system("CLS");
printf(" *****浏览全部学生的信息***** ");
Sleep(1000);
menu();
break;
case 6:
system("CLS");
printf(" *****按成绩排序学生的信息***** ");
Sleep(1000);
menu();
break;
case 7:
system("CLS");
printf(" *****保存学生的信息到本地文件***** ");
Sleep(1000);
menu();
break;
case 8:
system("CLS");
printf(" *****读取本地文件中的学生信息***** ");
Sleep(1000);
menu();
break;
case 0:
system("CLS");
printf(" *****程序退出中***** \n");
for(int i = 1; i < 4; i++)
{
Sleep(400);
printf(">>>>>>>>>>>>>>>");
}
printf("!");
exit(0);
break;

}
}

return 0;
}

void Welcome() //欢迎界面
{
for(int i = 0; i < 10; i++) printf("\n");

for(int i = 0; i <=35; i++)
{
printf(" ");
}
printf("欢迎使用学生管理系统\n");

for(int i = 0; i < 10; i++) printf("\n");

for(int i = 0; i < 30; i++) printf(" ");
printf("2019年\n");

for(int i = 0; i < 30; i++) printf(" ");
printf("版本号:0.1\n");

for(int i = 0; i < 30; i++) printf(" ");
printf("");
}

int menu() //菜单
{
choice = -1;
system("CLS");
for(int i = 0; i < 5; i++) printf("\n");

for(int i = 0; i < 35; i++) printf(" ");
printf("*****学生管理系统*****\n");

for(int i = 0; i < 35; i++) printf(" ");
printf("1.增加新的学生\n");

for(int i = 0; i < 35; i++) printf(" ");
printf("2.修改学生的信息\n");

for(int i = 0; i < 35; i++) printf(" ");
printf("3.查找学生的信息\n");

for(int i = 0; i < 35; i++) printf(" ");
printf("4.删除学生的信息\n");

for(int i = 0; i < 35; i++) printf(" ");
printf("5.浏览全部学生的信息\n");

for(int i = 0; i < 35; i++) printf(" ");
printf("6.按成绩排序输出学生的信息\n");

for(int i = 0; i < 35; i++) printf(" ");
printf("7.保存学生的信息到本地文件\n");

for(int i = 0; i < 35; i++) printf(" ");
printf("8.读取本地文件中的学生信息\n");

for(int i = 0; i < 35; i++) printf(" ");
printf("0.退出程序\n");

printf("\n请输入上面所对应的数字:\t");

scanf("%d", &choice);
if((choice < 0) | (choice > 8))
{
printf("您输入的数字有误,请核对后再输入");
Sleep(1000);
menu();
}

return choice;
}



student *addStu(student *stu)
{

char affirm = '\0';
printf("\n请输入要添加学生的姓名:");
scanf("%s", stu -> names);

printf("请输入要添加学生的性别(M为男性,F为女性):");
scanf("%c", &stu -> sex);

printf("请输入要添加学生的年龄:");
scanf("%d", &stu -> stu_age);

printf("请输入要添加学生的学号:");
scanf("%d",&stu -> stu_id);

printf("请输入要添加学生的成绩:");
scanf("%d", &stu -> stu_score);

printf("请核对以上输入的信息无误,请按o,重新输入请按c\n");
printf("请输入:\t");
scanf("%s", &affirm);

if(affirm == 'o')
{
printf("新建完成");
Sleep(500);
}
else if(affirm == 'c')
{
printf("请重新输入");
Sleep(500);
addStu(s);
}
return stu;
}
...全文
70 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Primit_ 2019-02-17
  • 打赏
  • 举报
回复
引用 2 楼 耕者走兔 的回复:
这类故障一般是野指针造成的。

student *stu这只是一个指针,他没有指向任何对象。

addStu(stu)你也没有为这个指针在函数内部创建对象。

谢谢,还是我的学业不精啊 ,完美解决了
耕者走兔 2019-02-17
  • 打赏
  • 举报
回复
这类故障一般是野指针造成的。

student *stu这只是一个指针,他没有指向任何对象。

addStu(stu)你也没有为这个指针在函数内部创建对象。
Primit_ 2019-02-17
  • 打赏
  • 举报
回复
我用的编译器是codeblocks

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧