使用sscanf提取没有分隔符的浮点数(仅使用预期长度)

时间:2013-01-08 03:17:20

标签: c++ c text-parsing

假设我们正在读取一个格式化的文件,以便每行包含两个浮点数,第一个浮点数占用该行的前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个字符不会开始向第一个浮点计数,直到跳过空格。有没有办法解析这些浮点数并将空格作为浮点长度的一部分包含在内?

1 个答案:

答案 0 :(得分: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);