我想知道是否可以将像“102.33, 220.44”这样的字符串转换为C中的double[],如果可以,它是如何完成的?
问问题
2054 次
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
您可以使用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;
}
于 2012-11-03T02:08:16.233 回答