我试图在嵌套循环中使用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
}
Run Code Online (Sandbox Code Playgroud)
Ale*_*x B 21
是的,strtok()实际上,使用一些静态内存来保存调用之间的上下文.使用的重入版本strtok(),strtok_r()而不是,或者strtok_s()如果你正在使用VS(相同strtok_r()).
它有一个额外的上下文参数,您可以在不同的循环中使用不同的上下文.
char *tok, *saved;
for (tok = strtok_r(str, "%", &saved); tok; tok = strtok_r(NULL, "%", &saved))
{
/* Do something with "tok" */
}
Run Code Online (Sandbox Code Playgroud)