有没有办法进行下一次调用以strtok()
重复当前返回?
在某种意义上将它推回strtok(NULL,)
堆栈?
我在递归中,通过几个级别的长开关情况,其中一个特殊情况让我需要在now之前做额外的事情,所以我做它们然后递归。问题是我需要将当前返回从堆栈strtok(NULL,"delim")
中推回,以便递归调用时再次获取它strtok(NULL,"delim")
我可以围绕它进行编程,但它不像我可以 un-strtok() 一次那样简单或可读。
这是我的意思的一个简单示例。un-strtok()
/* 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-