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

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;
}
...全文
147 3 打赏 收藏 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Primit_ 2019-02-17
  • 打赏
  • 举报
回复
引用 2 楼 耕者走兔 的回复:
这类故障一般是野指针造成的。

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

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

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

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

addStu(stu)你也没有为这个指针在函数内部创建对象。
Primit_ 2019-02-17
  • 打赏
  • 举报
回复
我用的编译器是codeblocks
内容概要:本文系统研究了基于雅可比伪逆迭代的双臂协同轨迹规划与跟踪误差收敛性问题,结合机械臂正向与逆向运动学建模、蒙特卡洛法分析工作空间、笛卡尔空间内的圆弧轨迹生成等关键技术,利用Matlab实现了双臂系统的协同控制与轨迹跟踪仿真。重点探讨了雅可比矩阵伪逆法在解决冗余自由度机械臂逆运动学问题中的应用,深入分析了轨迹跟踪过程中误差的收敛特性,并通过仿真实验验证了该方法在复杂任务场景下的有效性、稳定性与鲁棒性,为多臂机器人在工业自动化、精密操作等领域的协同作业提供了理论依据与技术支持。; 适合人群:具备机器人学、自动控制理论基础及Matlab编程能力的科研人员与工程技术人员,特别适合从事机械臂控制、轨迹规划、多机器人协同等方向的硕士、博士研究生及相关领域研究人员。; 使用场景及目标:①掌握基于雅可比伪逆法的机械臂逆运动学求解原理与实现方法;②理解双臂系统在笛卡尔空间中协同轨迹规划的机制;③分析并优化轨迹跟踪过程中的误差收敛性能;④为多机器人系统在复杂动态环境下的高精度协同控制提供算法设计与仿真验证支持。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,按照文档目录循序渐进地学习,重点关注算法实现细节、仿真参数设置与结果分析部分,同时可进一步探索将智能优化算法或深度学习方法引入轨迹规划与误差补偿的研究方向。

70,040

社区成员

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

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