【问题标题】:what does strtok(NULL, "\n") do? [duplicate]strtok(NULL, "\n") 是做什么的? [复制]
【发布时间】:2018-07-06 14:05:33
【问题描述】:

C 库函数 char *strtok(c​​har *str, const char *delim) 使用分隔符 delim 将字符串 str 分解为一系列标记。

当你输入s = strtok(NULL, "\n") 时会发生什么?用\n分割null是什么意思?

【问题讨论】:

  • 试过man strtok?
  • "在随后的调用中,str 应该为 NULL,并且 saveptr 应该自上次调用以来保持不变"。也许您会查看“后续通话”-其他strtok请参见上面的行。
  • 我投票结束这个问题,因为这是一个基本问题,可以通过阅读任何基本的 C 书籍/教程来回答。

标签: c strtok


【解决方案1】:

这并不意味着将 NULL 拆分为 \n

如果你传递一个非 NULL 值,你要求它开始标记传递的字符串。

如果您传递一个 NULL 值,您要求继续标记与以前相同的字符串(通常用于循环)。

例子:

int main(void)
{
   char *token, string[] = "a string, of,; ;;;,tokens";

   token = strtok(string, ", ;");
   do
   {
      printf("token: \"%s\"\n", token);
   }
   while (token = strtok(NULL, ", ;"));
}

结果:

token: "a"                                                                                                                                                   
token: "string"                                                                                                                                              
token: "of"                                                                                                                                                  
token: "tokens"     

【讨论】:

  • 如果不存在这样的令牌,token = strtok(string, ", ;") 将返回 NULLprintf("token: \"%s\"\n", token); 将尝试打印 NULL 字符。
猜你喜欢
  • 1970-01-01
  • 2013-02-17
  • 2021-11-03
  • 2014-06-24
  • 2021-04-14
  • 2012-05-22
  • 1970-01-01
  • 1970-01-01
  • 2012-08-04
相关资源
最近更新 更多