将逗号分隔的字符串转换为double

时间:2012-11-03 00:37:07

标签: c arrays string comma

我想知道是否可以将像“102.33,220.44”这样的字符串转换为C中的double [],如果可以的话,是怎么做的?

2 个答案:

答案 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)

您可以使用sscanfstrtod(不需要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;
}