我有一个字符串,其浮点值的数量未知,由空格分隔。(类似这样): 12.55 54.11 -1.00000 2.222 ...... 现在我需要将所有这些值读入数组。 我该怎么做呢?我是否必须使用 sscanf ?
答案 0 :(得分:1)
我必须使用
sscanf
吗?
不,你没必要,除非你喜欢使用它。我更喜欢使用strtof
。
无论您使用哪种函数,都需要使用一个循环来读取字符串中的值。由于项目数量未知,您可以扫描字符串两次 - 一次扫描您有多少项目,第二次扫描实际读取。由于字符串在内存中,因此循环中浪费的时间将对条目进行计数。
int cnt = 0;
char *str = "2.55 54.11 -1.00000 2.222";
char *ptr = str, *eptr;
do {
strtof(ptr, &eptr);
ptr = eptr;
cnt++;
} while (*eptr);
printf("%d\n", cnt);
float *res = malloc(cnt*sizeof(float));
ptr = str;
for (int i = 0 ; i != cnt ; i++) {
res[i] = strtof(ptr, &eptr);
ptr = eptr;
}
for (int i = 0 ; i != cnt ; i++) {
printf("%f\n", res[i]);
}