c - 在 for 循环中使用 strtok

标签 c

要遍历我使用的字符串 str:

for (tok = strtok(str, ";"); tok && *tok; tok = strtok(NULL, ";"))  
{  
   //do stuff  
}

我想了解这个循环是如何工作的。在我看来:

(1) tok = strtok(str, ";"); //initialization of tok with the first token in str    
(2) tok = strtok(NULL, ";"); // go to the next token in str? how does this work? 
(3) tok && *tok;  //this stops the loop when tok =NULL or *tok=NULL 

非常感谢您的帮助!

最佳答案

这是一个示例 strtok 实现:http://bxr.su/o/lib/libc/string/strtok.c#strtok

正如您在代码中看到的,它在内部使用静态字符指针(我见过的几乎每个版本都存储一个指针,作为全局变量或静态变量,如上例所示)。此版本调用可重入 strtok_r(以及 if (s == NULL && (s = *last) == NULL 行的副作用) 是传NULL时使用最后一个指针)

关于c - 在 for 循环中使用 strtok,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17355099/

相关文章:

c - 查找头文件包含路径

似乎找不到 EOF 字符?

c - 从 C 中的双指针数组中删除单行?

c - C中的图像缩放

GCC源代码中的C语法

c - C 中 char[] 和 char* 的区别

c - Windows C 套接字关闭并重新连接

c - gcc 的正确选项顺序是什么?该顺序的重要性是什么?

c - 确定 EOF 表达式

c - 如果全局变量有默认的外部链接那么为什么我们不能直接在另一个文件中访问它?