急!!用feof读取文件的问题

软件VC6.0,win10和win7电脑,win10电脑用while(!feof(fp))读取没问题,最后一行读取为空行,但是win7电脑运行同样的代码,却只读到最后一行,非空行,导致在创建链表头指针时,链表最后尾部结点少了一个,麻烦大佬帮看看是为什么,急!!

Lnode* creat()
{
    FILE *fp;
    fp=fopen("图书信息.txt","r");
    Lnode *p1,*p2;
    Lnode *Head;
    p1=p2=(Lnode*)malloc(LEN);
    Head=NULL;
    fscanf(fp,"%d %s %s %s %s %d",&p1->book_num,p1->book_name, p1->writer_name,p1->publisher_name,p1->data,&p1->book_price);
            while(!feof(fp))
    {
        n++;
        if(n==1)Head=p1;
        else p2->next=p1;
        p2=p1;
        p1=(Lnode*)malloc(LEN);
        fscanf(fp,"%d %s %s %s %s %d",&p1->book_num,p1->book_name,p1->writer_name,p1->publisher_name,p1->data,&p1->book_price);
    }
    p2->next=NULL;
    fclose(fp);
    return Head;
}
```![图片说明](https://img-ask.csdn.net/upload/201910/25/1571993832_621595.png)![图片说明](https://img-ask.csdn.net/upload/201910/25/1571993843_791021.png)

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^