Code Bye

关于链表的查询。学生信息系统的查找

当本人输入一些信息后,现在本人能够正常的输出链表的信息,但是当本人进入查询语句过后,退出系统想再次输出的时候,
查询就直接停止运行了。且查询只能查询一次,再查的画,也会停止运行–学生实践项目。
fflush(stdin);这里是调用语句//n为全局变量让它直到本人选择退出才退出,本人怀疑是链表被释放了。求指导
system(“cls”);
n=1;
while(n) {
searchmeun();
head = search(head);
printf(“按任意键继续\n”);
getchar();
}
break;
student *search(student *head) { //查找学生信息
// fflush(stdin);//–清空缓存区
student *p;
p=(student*)malloc(sizeof(student));
p=head;
int s;
scanf(“%d”,&s);
switch(s) {
case 1: {
fflush(stdin);
// system(“cls”);
printf(“正在使用学号查找信息\n请输入学号\n”);
int  y=0;//表示输入所查询的学号
scanf(“%d”,&y);
while (p!=NULL) {
if(p->xh==y) { //找到
p->avg=(p->eng+p->math+p->C+p->datab+p->sjjg)/5.0;
printf(“%s”,p->name);
printf(“%8d%8d%8.0lf%8.0lf%8.0lf%8.0lf%8.0lf%8.0lf%8.0lf\n”,p->xh,p->bj,p->eng,p->math,p->C,p->datab,p->sjjg,p->sum,p->avg);
break;
} else
p=p->next;//指向下一个  由while进行遍历 直到最后
}
// break;
}
n=1;
getchar();
break;
解决方案

20

你用学号不是可以的吗?
你用姓名查询会崩溃?
建议题主单步调试找到是哪句引发的。
或贴出完整代码。
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

10

崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止

40

引用:
Quote: 引用:

在调试模式下运行程序,出错了点中断,通过调用堆栈定位到出错位置,然后观察分析原因,必要时单步跟踪程序运行

只要不运行查询语句块就是对的,但是一经过查询语句块之后就不能进行再次的显示和查询了,好像链表再那之后就消失了一样

不要抱着脑袋去想好像是这好像是那,找问题最好的方式就是调试


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于链表的查询。学生信息系统的查找