C 创建以null结尾的字符串数组的数组,其中大多数字符串数组是静态的
我正在尝试创建一个以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}, /
所以这里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