0

「102.33,220.44」のような文字列をCでdouble[]に変換できるかどうか、また可能であればどのように変換できるか知りたいのですが。

4

2 に答える 2

2

1 つの方法は、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;
}
于 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 に答える