已经到文件结尾了feof还是返回0

为啥我这里已经到文件结尾了feof还是返回0

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct User
{
    char name[32];
    char number[16];
    char age[4];
    char country[32];
    struct User* pNext;
}user,*pUser;

void insertUser(pUser* ppHead,pUser* ppTail,char* userinfo)
{
    pUser pNew=(pUser)calloc(sizeof(user),1);
    char* pCur0=userinfo;

    //name
    for(int i=0;*pCur0!=';';i++,pCur0++)
    {
        pNew->name[i]=*pCur0;
    }

    pCur0++;

    //number
    for(int i=0;*pCur0!=';';i++,pCur0++)
    {
        pNew->number[i]=*pCur0;
    }

    pCur0++;

    //age
    for(int i=0;*pCur0!=';';i++,pCur0++)
    {
        pNew->age[i]=*pCur0;
    }

    pCur0++;

    //country
    for(int i=0;*pCur0!='\n'&&*pCur0!='\0';i++,pCur0++)
    {
        pNew->country[i]=*pCur0;
    }

    if(NULL==*ppHead)
    {
        *ppHead=pNew;
        *ppTail=pNew;
    }
    else
    {
        (*ppTail)->pNext=pNew;
        *ppTail=pNew;
    }
}

void printUser(pUser pHead)
{
    while(pHead)
    {
        printf("%s;%s;%s;%s\n",pHead->name,pHead->number,pHead->age,pHead->country);
        pHead=pHead->pNext;
    }
}

int main()
{
    FILE* fp1=fopen("text","rb");
    char userInfo[100];
    int i=0;
    pUser pHead=NULL,pTail=NULL;

    while(!feof(fp1))
        memset(userInfo,0,sizeof(userInfo));
        fgets(userInfo,100,fp1);
        if(0!=i)
        {
            insertUser(&pHead,&pTail,userInfo);
        }
        i++;
    }

    printUser(pHead);
    fclose(fp1);
    return 0;
}

 

gdb

text文件

 

可能是多了一行,删掉试吧