我用尾插法,把txt中的数据读出来之后printf输出不出来
struct jieshu *create(void) //创建借阅信息链表,返回链表头指针
{
struct jieshu *head;
struct jieshu *p1,*p2;
if((fp4=fopen("jieshu.txt","r"))==NULL)
{
printf("open jieshu.txt error!");
}
p1=p2=(struct jieshu *)malloc(sizeof(struct jieshu));
fscanf(fp4,"%s %s %s %s %s\n",p1->num,p1->name,p1->writer,p1->press,p1->kind);
while(!feof(fp4))
{
if(head==NULL)
{
head=p1;
}
else
{
p2->next=p1;
}
p2=p1;
p1=(struct jieshu *)malloc(sizeof(struct jieshu));
fscanf(fp4,"%s %s %s %s %s",p1->num,p1->name,p1->writer,p1->press,p1->kind);
}
p2->next = NULL;
free(p1);
free(p2);
fclose(fp4);
return head;
}
后面函数循环输出链表内容
void Lend(void)
{
struct jieshu *head;
struct jieshu *str;
head=create();
if(head==NULL)
{
printf("读取失败");
StudentMenu();
}
for(str=head;str!=NULL;str=str->next)
{
printf("%s %s %s %s %s",str->num,str->name,str->writer,str->press,str->kind);
}
}
我用VC6.0debug,调用堆栈就停在printf的那行,求大佬解惑