是否可以使用sscanf
在下面的示例中读取字符串s
作为两个10个字符(包括空格)的宽浮点数?或者我必须将10个字符的块复制到临时字符数组,并在该临时数组上使用sscanf
?用sscanf从char字符串中读取一个固定宽度的浮点数
#include <stdio.h>
int main(int argc, const char* argv[])
{
char s[]={" 6.4887.0522e+06"};
float f1, f2;
sscanf(s, "%10f%10f", &f1, &f2);
printf("%10f %10f\n", f1, f2);
}
我在这个例子中的愿望是从sscanf
读得f1 = 6.448
和f2 = 7052200.
。
如果我们假设这仅仅是一个例子,并且您希望有一个解析这些数据的通用算法,那么答案就取决于数据格式中的常量。 (例如,点总是4的长度后的数字组?)。一般来说,你可以用字段宽度来停止在一个数字中间,但是@ user3121023表示,空格不计算在内。 –
谢谢,但我显然不够清楚。字符数组应该总是被解析为长度为10个字符的组。所以我的例子中的第一个子字符串是“6.488”,第二个字符串是“7.0522e + 06”。问题不在于只读取这个特定的字符串。我正在寻找一种通用的方法来读取这种类型的数据,其中每个10字符的子字符串可以包含以有效浮点格式格式化的任何种类的浮点值。 – Anders
你可以拆分数组:https://ideone.com/CGgtUj – mch