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