strtok的行为

时间:2013-01-16 09:06:24

标签: 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;
  }

在上述程序中,输出为7。

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

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

2 个答案:

答案 0 :(得分:5)

正确。 The documentation非常清楚地说明了这一点:

  

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

这就是strtok()应该如何运作的方式。你最好自己动手,这也可以让你摆脱strtok()的肮脏。

答案 1 :(得分:1)

简短回答:不 至少使用strtok,check this来了解哪些更适合您的应用程序。