发生如下错误
以下是部分源代码。。期末的图书管理系统的大作业的= =
typedef struct book
{
char AN[10]; /*登录号*/
char name[20]; /*书名*/
char author[20]; /*作者名*/
char clc[10]; /*分类名*/
char company[20]; /*出版单位*/
char date[20]; /*出版日期*/
char price[10]; /*价格*/
struct book *next;
}Booklist,*Pointer;
int num=0;//全局变量的定义
Pointer Head=NULL;//头指针为空
FILE *fp;//指向文件的指针
void Read()/*读入文本文件的函数*/
{Pointer p,q;
int m=0;
char file[20];
printf("请输入文件路径及文件名:");
scanf("%s",file);
if((fp=fopen(file,"r+"))==NULL)
{
printf("不能打开文件!\n");
return;
}
m=m+1;
if(m==1)
{
p=(Pointer)malloc(sizeof(Booklist));
Head=p;//将p的地址赋给头指针Head
fscanf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n",&p->AN,&p->name,&p->author,&p->clc,&p->company,&p->date,&p->price);
do
{num=num+1;//记录书籍信息量
if(num==1) //区别开链表开头与中间的处理方法
Head->next=p;
else q->next=p;
q=p;
p=(Pointer)malloc(sizeof(Booklist));
fscanf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n",&p->AN,&p->name,&p->author,&p->clc,&p->company,&p->date,&p->price);//读入文件数据
}while(!feof(fp));//检查文件是否结束,若是则停止读入,否则继续读入
q->next=p;
p->next=NULL;//链表结尾处理
num=num+1;
}
printf("写入数据成功,可返回浏览其信息。");
fclose(fp);
return;
}
void Scan(Pointer Head) //显示图书信息函数
{
Pointer p;
p=Head;
if(p==NULL)
printf("记录为空");//检测是否有图书信息
else
{
printf("\n\t共有%d条记录",num);
while(p!=NULL)
{
printf("\n\n\t\t登录号:%-10s",p->AN);//显示图书信息
printf("\n\t\t书名: %-20s",p->name);
printf("\n\t\t作者名: %-20s",p->author);
printf("\n\t\t分类号: %-10s",p->clc);
printf("\n\t\t出版单位:%-20s",p->company);
printf("\n\t\t出版时间:%-20s",p->date);
printf("\n\t\t价格: ¥%-10s",p->price);
p=p->next;
}
printf("\n\t\t请按任意键回到主菜单");
return;
}
}