【发布时间】:2017-07-28 16:15:13
【问题描述】:
我在 while 循环中使用 Strtok 将我的输入拆分为三个字符串,例如:input="Command path 'you are beautiful'" 拆分为:
tok1="Command"
tok2="path"
tok3="'you are beautiful'"
我不能连续使用 strtok 三次,因为 tok3 只是“你”。
我的问题是,当我使用 strtok 时,初始变量输入会发生什么情况?
在第一次调用 strtok 之后,我希望输入是“路径'你很漂亮'”,然后在第二个之后只是“'你很漂亮”,所以在我运行 strtok 时逐渐减少我的初始字符串。
有可能吗?如果没有,我该怎么办?
【问题讨论】:
-
是的,
strtok正在更改输入字符串。如果您想保留原件,请将其复制到某处。 -
是的,@EugeneSh.,但
strtok()不会以 OP 希望实现的方式修改原始字符串。 -
点赞this
-
@iPhra,您似乎不欣赏
strtok()的操作模式。它不会创建输入的子字符串的副本,而是用字符串终止符覆盖原始字符串中的分隔符,并返回指向每个结果段的起始字符的指针。你可以通过一些工作来实现你所描述的,但除非你也复制你的令牌,否则它不会有你期望的结果。 -
strtok是一个非常邪恶的功能。我想知道为什么它还没有被正式弃用。