求大神解答关于c语言的问题
struct Book{long num; //登录号
char name[20]; //书名
char author[20];
char classNum[20];
char PC[20]; //出版单位 5798156
char time[10]; //出版时间
char price[10]; //价格
struct Book *next;
}Book;
struct Book *FindByName(struct Book *head)
{
struct Book *pr = head,*p = NULL;
char a[20];
int flag=0;
if(head == NULL) //链表为空
{
printf("数据库没有图书!\n");
return head;
}
else
{
printf("请输入要查找的书名:\n");
scanf("%s",a);
while(pr != NULL)
{
while((strcmp(a,pr->name)!=0)&&(pr->next!=NULL))
{
p = pr; // 出错点
pr = pr->next;
}
if( strcmp(a,p->name)==0)//找到节点
{
printf("2. if\n");
flag++;
printf("***********************************************************************\n");
printf("%d. ",flag);
printf("登录号:%d\n",p->num);
printf("书名:%s\n",p->name);
printf("作者:%s\n",p->author);
printf("分类号:%s\n",p->classNum);
printf("出版单位:%s\n",p->PC);
printf("出版时间:%s\n",p->time);
printf("价格:%s\n",p->price);
}
else
{
break;
}
pr = pr->next;
}
if(flag==0)
printf("没有找到该图书!\n");
}
return head;
}