0

假设我们正在读取一个格式为每行包含两个浮点数的文件,第一个浮点数占用该行的前 7 个字符,第二个浮点数占用该行的接下来的 7 个字符。例如:

  1.111222.222
333.333 44.444

鉴于此示例代码

float a, b;
sscanf("  1.111222.222", "%7f%7f", &a, &b);
printf("%f %f\n", a, b);

以下是输出:

1.111220 2.222000

在跳过空格之前,这 7 个字符不会开始计入第一个浮点数。有没有办法解析这些浮点数并将空格作为浮点数的一部分包含在内?

4

1 回答 1

1

我能想到的最好的办法是将浮点数作为字符串读取,%7[^\n]然后将该输入解析为浮点数。

float a, b;
char a_buff[7 + 1];
char b_buff[7 + 1];
sscanf("  1.111222.222", "%7[^\n]%7[^\n]", a_buff, b_buff);
sscanf(a_buff, "%f", &a);
sscanf(b_buff, "%f", &b);
printf("%f %f\n", a, b);
于 2013-01-08T03:17:19.983 回答