-1

次のコードを使用して、以下の出力を取得します。

元の文字列は-CCY 1.2624 Up 0.0006(0.05%) 01:37 [37]

char* pch;

 pch = strtok (buffer," ");

  while (pch != NULL)
  {
    printf ("%s\n",pch);
    pch = strtok (NULL, " ");

  }

これは私の出力です

CCY
1.2624
Up
0.0006(0.05%)
01:37
SGT
[37]

1.2624を取得してcstrに割り当て、後でprintfwhileループの外で使用できるようにするにはどうすればよいですか?

4

2 に答える 2

1

strtokは静的バッファを使用するため、独自のバッファを使用して、関心のある文字列のコピーを作成する必要があります。何かのようなもの:

char* numbuffer = malloc(sizeof(char) * strlen(pch));

if (numbuffer != NULL) {
   strcpy(numbuffer, pch);
}

その他の例:http ://www.cplusplus.com/reference/clibrary/cstring/strcpy/

これを行う理由は、その後strtokを呼び出すと、pchが指すバッファーの値が変更されるためです。

于 2012-07-24T17:47:47.850 に答える
1
char* pch;

 pch = strtok (buffer," "); // pch == "CCY"
 // again:
 pch = strtok (NULL, " "); // pch == "1.2624"

2つ以上のアイテムbufferに分割できる場合

于 2012-07-24T17:48:08.843 に答える