如何使用 strtok() 标记

How to use strtok() tokens

根据此 descriptionstrtok() 通过给定的定界符将字符串分隔为标记,returns 指向字符串中找到的第一个标记的指针。所有后续的token都需要循环遍历,如link.

中给出的示例代码

每个令牌是否自动终止于 NULL?即我可以简单地将每个标记分配给一个变量并使用它还是需要将 strncpy() 复制到分配的 space?

例如,这有效吗?

   char str[80] = "This is - www.tutorialspoint.com - website";
   const char s[2] = "-";
   char *token;

   char *test[4];
   int test_count = 0;
   memset(test, 0x00, 4);

   /* get the first token */
   token = strtok(str, s);

   /* walk through other tokens */
   while( token != NULL ) {
      test[test_count] = token;
      test_count++;
      token = strtok(NULL, s);
   }

strtok() 通过 替换 分隔符列表中第一个出现的字符为 '[=13=]',从而处理您的原始输入字符串。所以是的,这就是您描述的预期用途。

旁注:

  • 不要写

    const char s[2] = "-";
    

    刚用

    const char s[] = "-";
    

    让编译器自动确定正确的大小

  • 在这种特殊情况下,只需将 "-" 传递给 strtok()(或将 #define 传递给 "-")就可以了,一个不错的编译器识别相同的字符串文字并只创建它们的一个实例。

  • 以防万一看到一些代码有帮助,这里是a simple strtok implementation我自己做了一段时间。