gpt4 book ai didi

c - 在两个函数中使用 strtok() 安全吗?

转载 作者:太空狗 更新时间:2023-10-29 14:58:42 26 4
gpt4 key购买 nike

我正在使用 strtok() 将一行解析为单个单词并检查它们是否有内容。如果找到那个东西,将调用另一个函数,该函数也必须使用 strtok()

我知道 strtok() 不可重入。这是否意味着如果我在第二个函数中调用它,我在第一个函数中的字符串中的位置将会丢失?如果是这样,在第一个函数中使用 strtok() 并在第二个函数中使用 strtok_r() 会解决问题吗?还有其他解决方案吗?

编辑:谢谢。确实不可能在两个函数中使用 strtok 但显然 strtok_r 不是标准的。重新设计它是...

最佳答案

由于 strtok 在内部使用一个全局变量来存储它在字符串中前进了多远,因此对 strtok 的混合调用将会失败,就像您怀疑的那样。您的选择是:

  • 切换到 strtok_r,它具有类似的 API,但不是标准的 C(尽管它在 POSIX 中);
  • 完全避免使用 strtok,转而使用其他不携带隐藏全局状态的函数,例如 strsep (也是非标准的);
  • 确保您的第一个函数在调用另一个可以调用 strtok 的函数之前完全耗尽 strtok

总而言之,strtok 是一个最好避免的函数。

关于c - 在两个函数中使用 strtok() 安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36054052/

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