strtok() 和空字段
我正在将一些 C 结构序列化为字符串,然后使用 strtok()
对其进行反序列化。但不幸的是,strtok()
没有检测到空字段(例如 1:2::4)。
有什么替代功能吗?
I am serializing some C structure to string and than deserializing it with strtok()
. But, unfortunately, strtok()
don't detect empty fields (eg 1:2::4).
Is there any alternative function?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在 Linux 上有 strsep。
On linux there's strsep.
您可以使用
strchr
(仅适用于一个分隔符)或strcspn
(适用于一组可能的分隔符)来查找下一个分隔符,处理令牌,然后仅执行第一步角色向前。循环执行此操作,您就拥有了所需的内容。You can use
strchr
(for just one delimiter character) orstrcspn
(for a group of possible delimiters) to find the next delimiter, process the token, and then just step one character forward. Do this in a loop and you have what you need.德拉科沙给出了正确答案。我想为这两种变体添加一个示例。
使用 strtok:
使用 strsep(将识别“”):
Drakosha gave the correct answer. I want to add an example for both variants.
With strtok:
With strsep (will recognize ""):