[英]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.