我有char buffer[128]
看起来像:
-0.003662 0.996887 0.012818 1.010438 0.004120 1.025911
从C中获取每个浮点数的最简单方法是什么?
答案 0 :(得分:3)
如果您知道字符串中有多少个浮点数,您还可以考虑sscanf
char buffer[128] = "-0.003662 0.996887 0.012818 1.010438 0.004120 1.025911";
float nums[6];
int numFloats = sscanf(buffer, "%f %f %f %f %f %f",
&nums[0], &nums[1], &nums[2], &nums[3], &nums[4], &nums[5]);
答案 1 :(得分:2)
您可以使用strtok()或strtok_r()来传递它 - 请参阅strtok manual:
像:
void parse_numbers(char *buffer) {
char *number = NULL;
for (number = strtok(buffer, " "); number != NULL; number = strtok(NULL, " ")) {
do_something_with_number(conert_string_to_float(number));
}
}
float convert_string_to_float(char *number) {
float return_value = 0;
sscanf(number, "%f", &return_value);
return return_value;
}
答案 2 :(得分:1)
也许你应该看看:
Strtok refference而不是这个问题:string to float conversion?