strtok()
現在のリターンを繰り返すために次の呼び出しを行う方法はありますか?
ある意味でそれをstrtok(NULL,)
スタックにプッシュするには?
私は再帰中で、長いスイッチケースのいくつかのレベルを下ります.特別なケースでは今までに余分なことをする必要があるので、それらを実行してから再帰します. 問題は、再帰が呼び出されたときに再帰が再び取得されるように、現在のリターンをスタックstrtok(NULL,"delim")
にプッシュする必要があることですstrtok(NULL,"delim")
私はこれを回避するようにプログラムすることができましたが、strtok() を一度 un-strtok() できるかのように単純でもなく、読みやすくもありません。
これが私が言いたいことの簡単な例です。unstrtok()
/* UN-strtok example */
#include <stdio.h>
#include <string.h>
int main ()
{
char str[] ="- This, a sample string.";
char tok[] =" ,.-";
char * pch;
int i=0;
printf ("Splitting string \"%s\" into tokens:\n",str);
pch = strtok (str,tok);
while (pch != NULL)
{
printf ("%s\n",pch);
if (i==1) {
//un_strtok(NULL,tok);
}
i++;
pch = strtok (NULL, tok);
}
return 0;
}
これは次のように返されます:
Splitting string "- This, a sample string." into tokens:
This
a
sample
string
-Done-
un_strtok() が機能した場合、次のようになります。
Splitting string "- This, a sample string." into tokens:
This
a
a
sample
string
-Done-