调用指针时出错了。。出现令我头疼的空指针问题
调试图片如上。。
下面是函数。
程序代码:void search_book(pbook head)
{
int choice;
pbook ptr4;
char bookname[30];
long booknum;
ptr4=head;
printf("请输入查找方式");
printf("1、按书号查找");
printf("2、按书名查找");
printf("0、退出");
scanf("%d",&choice);
if(choice==1)
{
scanf("%ld",&booknum);
while( ptr4->num!=booknum || ptr4->next!=NULL)
{
ptr4=ptr4->next;
}
if(!(ptr4->next))
{
printf("输入书号有错,请重新输入\n");
return_book(head);
}
printf("%ld%3.30s%4.ld%3.10s%2.d",ptr4->num,ptr4->name,ptr4->stu_num,ptr4->stu_name,ptr4->lent_out);
{
int choice1;
printf("继续查询输入1,退出查询输入0");
scanf("%d",&choice1);
if(choice1)
search_book(head);
else
return ;
}
}
else if(choice==2)
{
scanf("%s",bookname);
while( strcmp(ptr4->name,bookname)!=0 || ptr4->next!=NULL)
{
ptr4=ptr4->next;
}
if(!(ptr4->next))
{
printf("输入书号有错,请重新输入\n");
return_book(head);
}
printf("%ld %3.30s %4.ld %3.10s %2.d %d",ptr4->num,ptr4->name,ptr4->stu_num,ptr4->stu_name,ptr4->lent_out);
{
int choice1;
printf("继续查询输入1,退出查询输入0");
scanf("%d",&choice1);
if(choice1)
search_book(head);
else
return ;
}
}
}
究竟是什么问题啊?最近老遇到这种问题。。。。头痛死了。









