[英]It it possible to to read using fscanf till EOF ? C
我正在編寫從txt文件讀取名稱,姓氏和數字並將其保存到結構的函數。 文件中的變量以這種方式排列
姓名| 姓| 數
我的問題是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之前停止閱讀或如何正確閱讀它。
編輯:
我的.txt文件的最后幾行:
Annette | Bening | 378422705
George | C.Scott | 209747332
Burt | Lancaster | 568016673
Louis | Gossett Jr. | 528057525
使用scanf在文件末尾停止很容易。
a=fscanf(fp,"%s | %s | %d",(p+i)->name,(p+i)->last_name,&(p+i)->number);
if (a != 3) {
/* handle eof; */
break;
}
還有很多事情要做,包括格式錯誤的文件以及在增加陣列時讀取文件一次,但是,嘿,寶貝們步步為營。 您還將在任何IO或格式錯誤時到達該eof塊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.