2
 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 正在一次标记连续的逗号。

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

4

2 回答 2

5

正确的。该文档非常清楚地说明了这一点:

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

strtok()就是应该如何工作。你可能会更好地滚动你自己,这也将使你摆脱strtok()肮脏。

于 2013-01-16T09:09:03.403 回答
1

简短回答:NO 至少使用 strtok,检查这个以了解什么对您的应用程序更好。

于 2013-01-16T09:08:15.860 回答