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

正しい。ドキュメントには、これがかなり明確に記載されています。

解析された文字列内の 2 つ以上の連続する区切り文字のシーケンスは、単一の区切り文字と見なされます。

それはちょうどどのように動作するstrtok()はずです。自分で巻いたほうがいいかもしれません。そうすれば、strtok()の不快感から解放されます。

于 2013-01-16T09:09:03.403 に答える
1

短い答え: いいえ 少なくとも strtok を使用して、これをチェックして、アプリケーションにとって何が優れているかを確認してください。

于 2013-01-16T09:08:15.860 に答える