我试图在嵌套循环中使用
strtok().但这不是给我期望的结果.
可能是因为它们使用相同的内存位置.我的
代码是: –
char *token1 = strtok(Str1,"%");
while(token1 != NULL )
{
char *token2 = strtok(Str2,"%");
while(token2 != NULL )
{
//DO SMTHING
token2 = strtok(NULL,"%");
}
token1 = strtok(NULL,"%");
// Do something more
}
是的,
strtok()确实使用一些静态内存来保存
调用之
间的上下文.如果您使用VS(与strtok_r()相同),请使用可重入版本的
strtok(),strtok_r()或strtok_s().
它有一个附加的上下文参数,您可以在不同的循环中使用不同的上下文.
char *tok,*saved;
for (tok = strtok_r(str,"%",&saved); tok; tok = strtok_r(NULL,&saved))
{
/* Do something with "tok" */
}