要遍历我使用的字符串 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/