我试图在C中读取格式化文件,这是该文件的示例行:
SURNAME; NAME; MINUTES' SECONDS''             
我写了这段代码:
while(!feof(fp))
{
fscanf(fp,"%[^;]s",surname);
fscanf(fp,"%c",&c);
fscanf(fp,"%[^;]s",name);
fscanf(fp,"%c",&c);
fscanf(fp,"%d'%d''%d",&min,&sec,&sec_cent);
fscanf(fp,"\n");
}
它与名称和姓氏字符串配合得很好,但是它没有提取时间MINUTES&SECHDS'第一个第一,我不知道为什么
有人能帮助我吗?
答案 0 :(得分:2)
您可能希望在代码中更改一些内容:
scanf
(或fscanf
)的返回值,以查看是否已读取所有数据。feof()
to control a loop。'\n'
,除非您之后要使用getline()
。s
,但是您应该防止缓冲区溢出限制每个字段读取的字符数。%*c
跳过字符(;
)。这应该没问题:
int min = 0, sec = 0, sec_cent = 0;
char name[128], surname[128];
while ( fscanf(fp, "%127[^;]%*c%127[^;]%*c%2d'%2d''%2d", surname, name,
&min, &sec, &sec_cent) == 5 ) {
// do something...
}