strtok的行为

Kun*_*mar 2 c strtok

 int main ()
 {

    char str[] ="kk,12,,23,4,,,3434,3,33,,,";
    char * valarr;
    int count=0;
    valarr = strtok(str,","); 
    while(valarr != '\0')
    {
               valarr = strtok(NULL,","); 
    count++;
    }
    printf("%d\n",count);
   return 0;
  }
Run Code Online (Sandbox Code Playgroud)

在上面的程序中输出为7.

似乎strtok一次性标记连续的逗号.

我可以在中间插入一个空格而不是连续的逗号,但有没有办法克服这个问题,以便我在计数中也有空格?

unw*_*ind 5

正确.文档清楚地说明了这一点:

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

strtok()就是应该如何运作.你最好自己动手,也可以让你免于strtok()肮脏.