刚学头插法做了一个图书馆书籍输入程序,但是打印不了书目信息
自己看了好久也找不到原因,请问一下是哪里出了问题
下面是详细程序
#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;
}