【发布时间】:2021-02-27 03:44:09
【问题描述】:
我想读入一个格式如下的文件
char double int double int double int
char double int double int double int
int
double
问题是前两行的外观未知,可能只有 2 行这样或更多。 (文件的其余部分是不变的,所以没有问题)
我使用 fscanf() 并且我知道它返回已成功读取的项目数。我想使用它,但结果失败了,因为我猜整数可以毫无问题地读取为字符。
我的代码
int i = 0;
while(fscanf(file, "%c ", &race[i].tireType) != 0)
{
fscanf(file, "%lf %d %lf %d %lf\n",
&race[i].newLap,
&race[i].wearoffLaps,
&race[i].wearoffRate,
&race[i].teardownLaps,
&race[i].teardownRate);
printf("%c: %lf %d %lf %d %lf\n", race[i].tireType, race[i].newLap, race[i].wearoffLaps, race[i].wearoffRate, race[i].teardownLaps, race[i].teardownRate);
++i;
}
当当前行的第一个字母是数字时,如何使循环停止?
【问题讨论】:
-
使用
fgets()读取每一行并将sscanf()应用于它,尝试转换两个%s字符串(每个字符串都停在一个空格处)。当你不能转换 2 个字符串时(sscanf()的返回值只有1),你已经到达了包含int的行,你可以重新处理它,因为它仍然存在于一个字符串中。