0

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

4

2 回答 2

2

一种方法是使用带有and作为分隔符的strtok ,并使用strtod将每个标记转换为双精度,然后可以将其存储在数组中。您应该能够通过对 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;
}
于 2012-11-03T00:59:57.027 回答
2

您可以使用sscanfstrtodstrtok不是必需的)。如果您想获取字符串中的下一个数字(即示例中的 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;
}
于 2012-11-03T02:08:16.233 回答