帮帮忙!!!!单次录入,浏览时无限循环。。多次录入后浏览数据覆盖。。自己搞了很久了,实在找不出来了
void book_add(){
int i=0;
FILE* fp;
char in;
for(;;)
{
i++;
if(head==NULL)
{
head=p1=p2=(struct Book*)malloc(sizeof(struct Book));
head->next=NULL;
}
else
{
p1=(struct Book*)malloc(sizeof(struct Book));
p1->next=NULL;
}
printf("编号:\n");
gets(p1->num);
printf("书名:\n");
gets(p1->name);
printf("作者:\n");
gets(p1->writer);
printf("分类号:\n");
gets(p1->fenlei);
printf("出版单位:\n");
gets(p1->pubdanwei);
printf("出版时间:\n");
gets(p1->pubtime);
printf("价格:\n");
p1->price=0.0f;
scanf("%f",&(p1->price));
getchar();
p2->next=p1;
p2=p1;
if((fp=fopen("Book.txt","rb"))==NULL)
{
fp=fopen("Book.txt","wb");
}
fwrite((char*)p1,sizeof(struct Book),1,fp);
fclose(fp);
printf("信息录入完毕,随意键退出\n");
break;
}
}
void book_view()
{
int i=0;
BOOK *p=NULL;
p=head;
for(;p!=NULL;)
{
i++;
printf("-------共有%d条记录--------\n",i);
printf("编号:%s\n",p1->num);
printf("书名:%s\n",p1->name);
printf("作者:%s\n",p1->writer);
printf("分类号:%s\n",p1->fenlei);
printf("出版单位:%s\n",p1->pubdanwei);
printf("出版时间:%s\n",p1->pubtime);
printf("价格:%f\n",p1->price);
p=p->next;
}
} 其中的p,p1已经在外部定义为了全局变量,查询和录入的菜单没有问题