为啥我这里已经到文件结尾了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文件
可能是多了一行,删掉试吧