我已经在一个库中看到了以下代码。当空字符串作为分隔符传递时,strtok的行为是什么?我可以看到struf调用后存储在令牌变量中的buf包含的内容。
char buf[256] = {0};
char token = NULL;
...
...
while (!feof(filePtr))
{
os_memset(buf, 0, sizeof(buf));
if (!fgets(buf, 256, filePtr))
{
token = strtok(buf, "");
...
...
}
}
最佳答案
strtok()
首先查找不在定界符列表中的第一个字符,以找到标记的开头。由于所有字符都不在定界符列表中,因此字符串的第一个字符将是标记的开头。
然后,它在定界符列表中查找下一个字符,以找到令牌的结尾。由于没有定界符,因此它将永远找不到它们,因此它在字符串的末尾停止。
结果,空的定界符列表意味着整个字符串将被解析为单个标记。
为何有人这样写呢?
关于c - 带空字符串定界符的strtok,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48398210/