qq_58245501 2021-07-19 20:47 采纳率: 100%
浏览 33
已采纳

在头插法程序上遇到了打印的问题

刚学头插法做了一个图书馆书籍输入程序,但是打印不了书目信息
自己看了好久也找不到原因,请问一下是哪里出了问题
img
下面是详细程序
#include<stdio.h>
#include<stdlib.h>
struct Book
{
char name[];
char author[];
struct Book *a;
};
void inputbook(struct Book **addlibrary);

void inputbook(struct Book **addlibrary)
{
struct Book *book,*temp;
book=(struct Book *)malloc(sizeof(struct Book));
if(book==NULL)
{
printf("error");
exit(1);
}
printf("输入书籍名称:");
scanf("%s",book->name);
printf("输入书籍作者:");
scanf("%s",book->author);
if(*addlibrary!=NULL)
{
temp=*addlibrary;
*addlibrary=book;
book->a=temp;
}
if(*addlibrary==NULL)
{
*addlibrary=book;
book->a=NULL;
}

}

void printbook(struct Book *);
void printbook(struct Book *library)
{
struct Book *book;
int count=1;
book=library;
while(book!=NULL)
{
printf("第%d本书:\n",count++);
printf("%s\n",book->name);
printf("%s\n",book->author);
book=book->a;
}
}

void releaseLibrary(struct Book *library);
void releaseLibrary(struct Book *library)
{
while(library!=NULL)
{
library = library->a;
free(library);
}
}
int main()
{
struct Book *library=NULL;
char pr;
while(1)
{
printf("是否输入书籍信息(Y/是,N/否)");
do
{
scanf("%c",&pr);
}while(pr!='Y'&&pr!='N');
if(pr=='Y')
{
inputbook(&library);
}
else
{
printf ("现在停止输入\n");
break;
}

}
printf("打印输入信息:\n");
printbook(library);

releaseLibrary(library);

return 0;

}

  • 写回答

1条回答 默认 最新

  • 关注

    你没有设置字符串数组的大小
    char name[50];
    char author[50];

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 7月19日
  • 创建了问题 7月19日

悬赏问题

  • ¥66 定制开发肯德基自动化网站下单软件
  • ¥20 vscode虚拟环境依赖包未安装
  • ¥15 odoo17关于owl开发js代码问题
  • ¥15 光纤中多普勒频移公式的推导
  • ¥15 怎么制作一个人脸识别门禁系统
  • ¥20 大华dss监控平台网络关闭登不进去
  • ¥15 请使用蚁群算法解决下列问题,并给出我完整的代码
  • ¥20 关于php录入完成后,批量更新数据库
  • ¥15 请教往复密封润滑问题
  • ¥15 cocos creator发布ios包