程序运行到while((p!=NULL)&&(strcmp(p->name,name)!=0))停止运行

baidu_34662140 2016-04-14 06:26:35
void MassageAlter()//修改商品信息
{
char name[50];
GoodsLink *head, *p,*pre;
head=CreatGoodsLink();
p=head->next;
pre=head;
printf("\n\n输入要修改商品的名称:");
scanf("%s",name);
while((p!=NULL)&&(strcmp(p->name,name)!=0))
{
pre=p;
p=p->next;
}
if(p==NULL)
{
printf("商品不存在!\n");
exit(0);
}
else
{
printf("重新输入商品信息!\n");
getchar();
printf("\n输入商品名称:"); gets(p->name);
printf("\n输入类别编号:"); gets(p->key);
printf("\n输入商品货号:"); gets(p->keynum );
printf("\n输入入库价:"); gets(p->pricein);
printf("\n输入出库价:"); gets(p->priceout);
printf("\n输入入库日期:"); gets(p->datain);
printf("\n输入库存数量:"); scanf("%d", &p->cou1);

}
SaveMassageW(head);
}



代码没有错误但是运行到while那里就停止运行了,不知道是哪里出错了,急啊急,在线等回复,
...全文
633 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
galiniur0u 2016-04-15
  • 打赏
  • 举报
回复
感觉是链表中某个节点p!=NULL,但p->name变量是个空指针。
赵4老师 2016-04-15
  • 打赏
  • 举报
回复
不要使用
while (条件)
更不要使用
while (组合条件)
要使用
while (1) {
 if (条件1) break;
 //...
 if (条件2) continue;
 //...
 if (条件3) return;
 //...
}
因为前两种写法在语言表达意思的层面上有二义性,只有第三种才忠实反映了程序流的实际情况。
典型如:
下面两段的语义都是当文件未结束时读字符
while (!feof(f)) {
 a=fgetc(f);
 //...
 b=fgetc(f);//可能此时已经feof了!
 //...
}
而这样写就没有问题:
while (1) {
 a=fgetc(f);
 if (feof(f)) break;
 //...
 b=fgetc(f);
 if (feof(f)) break;
 //...
}
类似的例子还可以举很多。
gldcpp 2016-04-15
  • 打赏
  • 举报
回复
GoodsLink 和CreatGoodsLink()具体是什么? GoodsLink 里的name是指针么?
paschen 2016-04-15
  • 打赏
  • 举报
回复
出错时断下来检测p的值是什么
cocoabird 2016-04-14
  • 打赏
  • 举报
回复
死循环了?while换成if看能不能跳出来继续运行
小灸舞 版主 2016-04-14
  • 打赏
  • 举报
回复
这部分代码感觉没啥问题,建议楼主再贴一下CreatGoodsLink函数的 崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止。
旧剑鞘 2016-04-14
  • 打赏
  • 举报
回复
不明白什么叫停止运行了,爱莫能助啊 代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

70,037

社区成员

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

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