c - 如何使用 strtok() token

标签 c strtok

据此description , strtok() 通过给定的分隔符将字符串分隔为标记,返回指向字符串中找到的第一个标记的指针。所有后续 token 都需要通过循环遍历,如链接中给出的示例代码。

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

例如,这有效吗?

   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() 对原始输入字符串起作用,方法是将分隔符列表中第一次出现的字符替换为 '\0'。所以是的,这就是您所描述的预期用途。

旁注:

  • 不要写这样的东西

    const char s[2] = "-";
    

    刚刚使用

    const char s[] = "-";
    

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

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

  • 以防万一查看一些代码会有所帮助,这里是 a simple strtok implementation我不久前也这么做过。

关于c - 如何使用 strtok() token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50220197/

相关文章:

c - 如何在C中初始化结构体

c - 提示如何早于 popen 调用的标准输出出现?

c - 使用 f2c 从 Fortran 翻译而来的 C 代码中出现错误

c - 使用 strtok 分组 false 标记分割字符串

c++ - 从 strtok 函数保存值

C:将一个字符串拆分为两个字符串,并返回一个2元素数组

c - 从函数返回局部变量

c - 使用函数并检查数组中较大的值

c - 解析内存映射文件C

c - C中的strtok段错误