大家好,我需要拆分一个字符串,
["myroot", "prod1" , ["prod2", "a", "b","c"], "prod3", ["ext", "ali"] ]
输出:
myroot
prod1
prod2 a b c
prod3
ext ali
我是 C 编程语言的新手,但我需要弄清楚这个任务。我找不到这样做的好方法。我可以使用任何数据结构算法或方法来做到这一点吗?任何帮助将不胜感激。我不希望你分享代码,如果你能告诉我我可以使用的 c 函数和算法,我将不胜感激。
答案 0 :(得分:4)
最简单的解析器使用一些全局状态来保持您所在的位置,并逐个字符读取输入字符并执行更改每个字符上的状态的操作。沿:
switch
在每个字符上并在每种情况下推进状态
[
吗?这意味着您在 [ ] 块内。[
并且已经在 [ ] 块内?这是一个嵌套的 [ ] 块。]
并且你在嵌套的 [ ] 块中?不再是你。"
并且您没有在引号内?你现在是。"
并且您在引号内?报价结束。,
吗?它是一个分隔符。如果您不在嵌套的 [ ] 块内,则将输出写入下一个数组元素。当在嵌套的 [ ] 块中时,您不会推进输出数组元素,如输出所示,而是向当前输出数组元素添加一个空格。realloc
添加并附加。