Я пишу функцию, которая читает имена, фамилии и номера из текстового файла и сохраняет их в структуре. Переменные в файле расположены следующим образом
Имя | Фамилия | Номер
Моя проблема в том, что у fscanf есть проблема с чтением последнего номера перед EOF.
Мой код:
int load_phonebook_t(const char *filename, struct entry_t* p, int size)
{
int a,i,ilosc=0;
FILE *fp;
if(filename==NULL || p==NULL || size<1)
{
return -1;
}
fp=fopen(filename,"r");
if(fp==NULL)
{
return -2;
}
rewind(fp);
for(i=0;i<size;i++)
{
if(i==size-1)
{
a=fscanf(fp,"%s | %s | %d[^EOF]",(p+i)->name,(p+i)->last_name,&(p+i)->number);
}
else
{
a=fscanf(fp,"%s | %s | %d",(p+i)->name,(p+i)->last_name,&(p+i)->number);
}
if(a==3)
{
ilosc++;
}
}
fclose(fp);
return ilosc;
}
Я пытался использовать fscanf (fp, "% s |% s |% d [^ EOF]"), но это не сработало. Мне нужна идея, как прекратить чтение до EOF или как правильно его прочитать.
Edit:
Последние несколько строк из моего .txt файла:
Annette | Bening | 378422705
George | C.Scott | 209747332
Burt | Lancaster | 568016673
Louis | Gossett Jr. | 528057525