| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 591 人关注过本帖
标题:程序停止响应,是指针使用出问题了的吗?【附代码】
取消只看楼主 加入收藏
九月痕
Rank: 2
等 级:论坛游民
帖 子:9
专家分:20
注 册:2011-4-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
程序停止响应,是指针使用出问题了的吗?【附代码】
程序代码:
void add_book()
/*增加1本新书,读入新书的名称、编号和数量*/
{ FILE *fp;
  book *p,*q;
  p=h_book;
  char book_num[15];
  int number;
  float price;
  printf("       \n请先输入新书编号:");
  scanf("%s",&book_num);
  fflush(stdin);
  while(p!=NULL&&strcmp(p->number,book_num)!=0)
    p=p->next;
  if(strcmp(p->number,book_num)==0)
    { printf("\n\t\t此编号已经存在,请重新输入!\n");
      add_book();
    }
  q=(book *)malloc(sizeof(book));  /*执行到这里时停止工作...*/
  printf("       \n请按顺序输入新书的名称、作者、出版社、出版时间、类别、价格、数量(以空格隔开):");
  scanf("%s%s%s%s%s%f%d",q->name,q->author,q->publish,q->time,q->classes,&q->price,&q->kc);
  strcpy(q->number,book_num);
  q->next=p->next;p->next=q;
  if((fp=fopen("book.dat","ab"))==NULL)
    {  printf("不能建立图书文件,初始化失败!请重新启动系统!\n"); return; }
  /*将新书信息添加到文件中*/
  fwrite(q,sizeof(book),1,fp);
  fclose(fp);
}
搜索更多相关主题的帖子: number color price 
2011-11-22 20:38
九月痕
Rank: 2
等 级:论坛游民
帖 子:9
专家分:20
注 册:2011-4-16
收藏
得分:0 
以下是引用cnfarer在2011-11-23 12:36:38的发言:

1.能确保p->next最后为NULL吗?
2.  
if(strcmp(p->number,book_num)==0)
    { printf("\n\t\t此编号已经存在,请重新输入!\n");
      add_book();//这样会形成递归,在这里用不是个好方法
    }
你好,谢谢你的解答!根据你的提示,摆弄了一中午,又把C语言的链表、内存分配部分好好看了下,现在已经解决啦~
p->next确实没有保证为NULL,判断语句改为了 while(p->next!=NULL&&strcmp(p->number,book_num)!=0) ,又发现其他地方在处理链表的时候也出现了一些问题,又修改了一番......

第二个提醒已经修改成while循环了

谢谢!
同时也谢谢2楼的朋友!

2011-11-23 15:20
九月痕
Rank: 2
等 级:论坛游民
帖 子:9
专家分:20
注 册:2011-4-16
收藏
得分:0 
回复 5楼 御风牧雨
唔...俺是学生..写的这个是课程设计...图书管理系统
2011-11-29 11:08
快速回复:程序停止响应,是指针使用出问题了的吗?【附代码】
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016201 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved