我想知道是否可以将像“102.33,220.44”这样的字符串转换为C中的double [],如果可以的话,是怎么做的?
答案 0 :(得分:2)
一种方法是使用strtok ' '
和','
作为分隔符,使用strtod将每个标记转换为double,然后将其存储在数组中。您应该能够对strtok的示例代码进行一些小的修改:
int main ()
{
char str[] ="- This, a sample string.";
char * pch;
printf ("Splitting string \"%s\" into tokens:\n",str);
pch = strtok (str," ,.-");
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, " ,.-");
}
return 0;
}
答案 1 :(得分:2)
您可以使用sscanf
或strtod
(不需要strtok
)。如果你想得到字符串中的下一个数字(例如你的例子中的220.44),你最好使用strtod
得到第一个数字,然后跳过逗号并重复。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char *p;
double val;
char str[] = " 102.33, 220.44";
int n = sscanf(str, "%lf", &val);
printf ("Value = %lf sscanf returned %d\n", val, n);
val = strtod(str, &p);
printf ("Value = %lf p points to: '%s'\n", val, p);
return 0;
}