我试图在嵌套循环中使用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 }
3 回答
qq_遁去的一_1
TA贡献1725条经验 获得超7个赞
是的,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" */
}
- 3 回答
- 0 关注
- 501 浏览
添加回答
举报
0/150
提交
取消