strtok与空字符串分隔符

时间:2018-01-23 09:27:50

标签: c strtok

我在其中一个库中看到了以下代码。当空字符串作为分隔符传递时,strtok的行为是什么?我可以看到buf包含的任何内容,在strtok调用之后存储到token变量中。

char buf[256] = {0};
char token = NULL;

...
...
while (!feof(filePtr))
{
  os_memset(buf, 0, sizeof(buf));
  if (!fgets(buf, 256, filePtr)) 
  {
    token = strtok(buf, "");
    ...
    ...
  }
}

1 个答案:

答案 0 :(得分:1)

strtok()首先查找不在分隔符列表中的第一个字符,以查找令牌的开头。由于所有字符都不在分隔符列表中,因此字符串的第一个字符将是令牌的开头。

然后它会在分隔符列表中查找下一个字符,以查找令牌的结尾。由于没有分隔符,它永远不会找到任何分隔符,所以它会在字符串的末尾停止。

因此,空分隔符列表意味着整个字符串将被解析为单个标记。

为什么他这样写的是任何人的猜测。