试图在C中读取格式化文件

时间:2016-05-28 13:47:12

标签: c readfile

我试图在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'第一个第一,我不知道为什么

有人能帮助我吗?

1 个答案:

答案 0 :(得分:2)

您可能希望在代码中更改一些内容:

  • 始终检查scanf(或fscanf)的返回值,以查看是否已读取所有数据。
  • Don't use feof() to control a loop
  • 您不需要使用scanf提取'\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...
}