gpt4 book ai didi

c - 在 C 中的嵌套循环中使用 strtok() 吗?

转载 作者:行者123 更新时间:2023-11-30 20:28:40 25 4
gpt4 key购买 nike

我正在尝试在嵌套循环中使用strtok(),但这并没有给我想要的结果,可能是因为它们使用相同的内存位置。我的代码的形式为:-

char *token1 = strtok(Str1, "%");
while (token1 != NULL)
{
char *token2 = strtok(Str2, "%");
while (token2 != NULL)
{
//Do something
token2 = strtok(NULL, "%");
}
// Do something more
token1 = strtok(NULL, "%");
}

最佳答案

是的,strtok()确实使用一些静态内存来保存调用之间的上下文。使用可重入版本的 strtok()strtok_r() 代替,或者如果您使用 VS,则使用 strtok_s()(与 strtok_r())。

它有一个额外的上下文参数,您可以在不同的循环中使用不同的上下文。

char *tok, *saved;
for (tok = strtok_r(str, "%", &saved); tok; tok = strtok_r(NULL, "%", &saved))
{
/* Do something with "tok" */
}

关于c - 在 C 中的嵌套循环中使用 strtok() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60019580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com