strtok是否具有破坏性?

问题描述 投票:0回答:1

我是否正确理解strtok使源字符串充斥着空字符?

我可以理解,每个新的迭代调用都首先将原始字符替换为空字符,然后继续,最后一次调用由于没有行进而返回null,然后替换最后一个空字符,最后放回原处。结果,源字符串最终将保持不变。 (当然,您是否要在上一次调用之前停止,源字符串将保持修改状态。)

但是没有文档提到这种策略。因此,如果希望源字符串保持不变,我必须先将源字符串复制到另一个缓冲区,然后再使用strtok处理?

c strtok
1个回答
0
投票

[strtok是破坏性的,在标准中有描述

如果找到这样的字符,则将其覆盖为null字符,该字符终止当前令牌。

enter image description here

7.21.5.8

© www.soinside.com 2019 - 2024. All rights reserved.