程序停止响应,是指针使用出问题了的吗?【附代码】
程序代码: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);
}









