C 创建以null结尾的字符串数组的数组,其中大多数字符串数组是静态的

C 创建以null结尾的字符串数组的数组,其中大多数字符串数组是静态的,c,multidimensional-array,null-terminated,C,Multidimensional Array,Null Terminated,我正在尝试创建一个以null结尾的字符串数组数组。数组中的所有内容在编译时都是已知的,只有一个元素在运行时放入数组中 这就是我希望阵列的外观: 所以这里command1、command2和它们的arg在编译时是已知的,只有argv在运行时被放入其中 问题是我不能使这项工作顺利进行。目前,我正在使用NUM_命令(number)命令创建一个数组: char *commands[ NUM_COMMANDS ][] = { {"command1", "arg", 0}, {0}, /

我正在尝试创建一个以null结尾的字符串数组数组。数组中的所有内容在编译时都是已知的,只有一个元素在运行时放入数组中

这就是我希望阵列的外观:

所以这里command1、command2和它们的arg在编译时是已知的,只有argv在运行时被放入其中

问题是我不能使这项工作顺利进行。目前,我正在使用NUM_命令(number)命令创建一个数组:

char *commands[ NUM_COMMANDS ][] = {
    {"command1", "arg", 0}, 
    {0}, /*This is where I want to place argv*/
    {"command2", "arg", 0}
    };
但它不允许我插入argv

我怎样才能把它变成我想要的那种数组


谢谢

在阅读了roliu发布的问题链接后,我自己设法解决了这个问题

char **commands[ NUM_COMMANDS ];
char *command1[] = {"command1", 0};
char *command2[] = {"command2", "arg", 0};

argv[0] = "grep";

commands[0] = (char **) command1;
commands[1] = (char **) argv;
commands[2] = (char **) command2;

感谢您对原始问题的评论

尚未通读,但这应该会有所帮助:您可能需要添加更多信息,例如什么是
NUM_命令
,以及如何尝试“插入”
argv
(以及编译器错误消息)。这是因为
命令
是一个常量。您需要动态分配内存。类似于:
char*commands\u d[NUM\u commands];对于(int i=0;i