【发布时间】:2019-04-13 07:07:01
【问题描述】:
我有一个 3d 字符指针数组:char ***semicols。
我希望这些价值观符合
semicol[0][0] = "ls"
semicol[0][1] = "~"
semicol[1][0] = "man"
semicol[1][1] = "grep"
等等。我有一个 char **args 数组,我在其中存储了这个,我也知道这个数组中分号的数量。我想创建具有上述结构的较小的char** ARGS,所以semicol[0] = {"ls", "~"}。
但我事先不知道每个分号参数的字符串数量,所以我不能将其设为静态char *semicols[][]。那么我如何合理地 malloc 3d 数组,还是有更好的方法来做我想做的事情?
【问题讨论】:
-
char ***semicols不是数组,而是指向char的指针的指针。char **args也一样,只是少了一个间接寻址。 -
啊,是的,对不起,我把它们当作数组来处理,尽管这不是一个正确的术语。
-
所以您正在尝试构建一个命令行数组以传递给
execvp? -
没错!我正在尝试实现 ;特殊标志
-
请记住,您必须为每个间接级别分配 指针 除了最后 - 您必须为要存储的任何内容分配足够的存储空间那里。所以对于
char ***semicols,你必须为命令行分配X的指针数量,Y指向每个命令中每个字符串的指针数量,然后为你分配给每个@的每个命令部分存储987654334@ 指针。 (另请注意——成为三星级程序员通常不是补充:)