我正在做一个赋值,我们必须用[]的组合形式推送任何字符串,然后将字符串呈现给多维数组。
示例输入字符串为:[qw,good,hello,hey,[we,need,to,eat],pretty,blue]
然后
如果我们输入命令:array
,我们将获得输出:[qw,good,hello,hey,[we,need,to,eat],pretty,blue]
。
如果我们输入命令数组[3],我们将得到输出:hey
。
如果我们输入一个命令:array [4],我们将获得输出[we,need,to,eat]
。
如果我们输入命令数组[4] [2],我们得到的输出是to
我的想法是使用令牌删除特殊字符,但问题是逗号都在多维数组中并且超出了维度数组。还有一个问题是我们不知道输入字符串,所以它可以是两个维度数组或3D或4D。谢谢
答案 0 :(得分:1)
您不能简单地将[qw,good,hello,hey,[we,need,to,eat],pretty,blue]
解析并读入多维数组,并以您建议的方式访问元素,因为您正在混合存储an array of character arrays
和an array of an array of character arrays
(对于子字符串{{ 1}})。它们有不同的指针,不能简单地添加到通用[we,need,to,eat]
。 (是的,你可以设置一些array
的数组和一些精心设计的测试机制来尝试优雅地处理什么是什么(void pointers
也许),但这似乎完全超出了你的要求。 / p>
满足您要求的更清晰的解决方案是tagged union
,其中结构会跟踪其array of structs
以及是否为array indexes
。幸运的是,这是问题的重要部分。
问题的重要部分是解析输入字符串并根据读取的字符采取适当的操作。这并不困难,只是乏味,需要从头到尾工作,基本上是逐个字符。
乍一看,可能看起来很简单sub-array
strtok
的分隔符可能是一种简单的方法,但是确定是否要为"[,]"
或{{1}分配条目},知道遇到了哪个终止字符。这基本上会让你回到main array
读。
解析并填充结构数组后,您必须提出一个输出例程,该例程采用sub-array
,搜索结构数组,并在索引匹配时输出匹配成员。
同样,这一切都不困难,但你有brute-force, character-by-character
的相同类型。以下是满足您要求的一种方法。它没有填充1 (or 2) indexes
分配给index accounting
的内存仍然必须被释放,您需要检查error checking
并根据需要重新分配。看一看,我想这会让你开始:
array of structs
<强>输出:强>
MAXS