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

Trying to read formatted file in C

我正在尝试读取 C 中的格式化文件,这是该文件的示例行:

SURNAME;NAME;MINUTES'SECONDS''ONE-HUNDREDTHS OF A SECOND

我写了这段代码:

 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'SECONDS''ONE-HUNDREDTHS OF A SECOND 我不知道为什么

有人可以帮助我吗?

您可能希望在代码中更改几处内容:

  • 始终检查 scanf(或 fscanf)的 return 值以查看是否读取了所有数据。
  • 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...
}