qq_35084195
qq_35084195
采纳率100%
2016-05-22 12:43

VC++ 6.0的问题,代码没错,运行不了

已采纳

用C写了个程序,要打开文件,当没有创建该文件时,运行正常,只是提示没找到。但是创建了文件后,在运行就抽搐了
BL *Creat()
{BL *p,*q;
int j=1;
char ch[5]={"end"};
FILE *fp;
fp=fopen("busline.txt","r+");
if(fp==NULL)
{printf("不能打开此文件!");
exit(0);
}
p=(BL *)malloc(sizeof(BL));
head=p;
q=p;
fscanf(fp,"%d",&(p->busnum));
do
{fscanf(fp,"%d %s",&(p->stop[j].num),p->stop[j].name);
j++;
}while(strcmp(p->stop[j-1].name,ch)==1);
while(!feof(fp))
{j=1;
p=(BL *)malloc(sizeof(BL));
q->next=p;
q=p;
fscanf(fp,"%d",&(p->busnum));
do
{fscanf(fp,"%d %s",&(p->stop[j].num),p->stop[j].name);
j++;
}while(strcmp(p->stop[j-1].name,ch)!=0);
}
q->next=NULL;
fclose(fp);
return head;
}
打开文件的代码
运行后图片说明
或者图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答

  • qq423399099 小灸舞 5年前

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

    代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
    提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
    单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

    点赞 评论 复制链接分享
  • caozhy 回答这么多问题就耍赖把我的积分一笔勾销了 5年前

    代码没错,说的好霸气。既然代码没错,那就是你电脑坏了,赶快扔了买新的吧。

    点赞 评论 复制链接分享
  • lbcab lbcab 5年前

    我建议你使用断点调试一下,看看死循环发生在哪个while中, 再一步步调试问题

    点赞 评论 复制链接分享
  • qq_33251499 qq_33251499 5年前

    你的代码要是没错,只能说明语法上没错,但是你在链接上可能出错,还有你的代码逻辑上有问题

    点赞 评论 复制链接分享
  • qq_33251499 qq_33251499 5年前

    死循环了,代码肯定有问题

    点赞 评论 复制链接分享