c2371看过其他解决方案没能解决问题

c2371看过其他解决方案没能解决问题

问题描述:

问题相关代码,请勿粘贴截图

c2371错误

运行结果及报错内容
void print_booklist_title()
{
    printf("您查找的书的资料是:\n");
    printf("--------------------------------------------------------------------------------");
    printf("编号                书名                          分类        借出时间       \n");
    printf("--------------------------------------------------------------------------------");
}
void print_booknode(struct book *t)
{

    if(t != NULL)
    {
        printf("%-20d%-30s%-10s",t->number, t->name, t->category);
        if(t->lent == 1)  
        {
            printf("  %d年%d月%d日\n",t->year,t->month,t->day);
        }
        else printf("  在库\n");
    }
    else
    {
        printf("没有找到该书!\n");
        printf("按任意键返回主菜单...\n");
        getch();
    }
}




//输出所有书
int print_all_book(struct book *head)          
{
    //清屏 
    system("CLS");
    //打印小标题 
    printf("\n");
    printf("================================显示所有书本====================================");
    printf("\n");
    // 
    char ch;
    // 
    struct book *p;
    p = head->next;
    // 
    if (p == NULL)
    {
        printf("\n数据库中没有书本!\n\n");
        printf("                  按任意键返回...");
        ch = getch();
        return 0;
    }
    //
    print_booklist_title();
    do
    {
        print_booknode(p);
        p = p->next;
    }
    while(p->next != NULL);
    printf("\n按任意键返回上级菜单哦...");
    ch = getch();
    return 1;
}


![img](https://img-mid.****img.cn/release/static/image/mid/ask/843140845936146.PNG "#left")

while(p->next != NULL);

这个有问题啊,如果p为空就爆机了。改为while(p!=NULL);

错误信息贴出来最好

先声明,后使用,以方便编译器识别出,从而实现 函数调用时,的参数和返回值的匹配(以及调用约定等的匹配)
先声2名print_booklist_title,print_booklist_title函数

你这报错的两个函数应该是某个类的成员函数吧,你应该在函数名前面加上 类名::

问题是什么,请说清楚。