C strtok没有标记空令牌值

时间:2017-03-31 13:55:21

标签: c tokenize strtok

我有一个使用1 4-18 * * * command 的小程序,如下所示:

strtok

我的输出结果如下:

#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] ="1,2,,3,4,5";
  char * pch;
  printf ("Splitting string \"%s\" into tokens:\n",str);
  pch = strtok (str,",");
  while (pch != NULL)
  {
    printf ("%s\n",pch);
    pch = strtok (NULL, ",");
  }
  return 0;
}

但是当我遇到Splitting string "1,2,,3,4,5" into tokens: 1 2 3 4 5 的连续分隔符时,我需要将空值作为空字符串获取,例如在这种情况下。 即我需要输出为: 分裂字符串&#34; 1,2,,3,4,5&#34;进入代币:

,,

任何补救措施?

1 个答案:

答案 0 :(得分:2)

这就是strtok()的行为方式。引用man page

  

解析后的字符串中的两个或多个连续分隔符字节的序列被视为单个分隔符。 [...]

您可以使用strchr()strpbrk()找出分隔符的每个匹配项并单独计算。