-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 以便我以后可以printf在 while 循环之外使用它或其他东西?

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"

前提是buffer可以拆分为两个或多个项目

于 2012-07-24T17:48:08.843 回答