You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

strtok tokenization异常行为问题:双$为分隔符输出结果不符合预期

问题根因

strtok函数的设计逻辑和预期不一致,具体原因如下:

  • strtok的第二个入参是单个分隔符的集合,不是需要完全匹配的多字符分隔串:你传入"$$"时,函数会自动对分隔符集合去重,实际等效于传入"$",只要扫描到单个$就会判定为遇到分隔符。
  • 首次调用strtok扫描字符串s时,会从字符串开头向后查找,碰到第一个属于分隔符集合的字符时,会直接把该字符改写为\0,然后返回该字符之前的子串指针。
  • 你的测试字符串是"hello $",hello后的空格后紧跟的$命中了分隔符规则,因此该$被改写为字符串结束符\0,最终printf输出的自然只有hello。

补充说明

如果需要实现按完整的"$$"作为分隔符拆分字符串,不能使用strtok,可以使用strstr函数匹配"$$"子串的位置,再手动截取拆分即可。

内容的提问来源于stack exchange,提问作者user14675723

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 09:57:00