如何在c中存储char*cmd[]?

如何在c中存储char*cmd[]?,c,C,假设在编译期间,我知道我有3个或n个char*cmd[]数组。 我需要把它存放在某个地方 如何存储3个或n个char*cmd[]数组 类似于在java中存储列表列表。我可以存储3或n,然后在循环中遍历它们,因为它是动态的,足以让我向其中添加任意数量的列表 对不起,我是c新手,所以不太了解指针存储 以下是我正在尝试做的: char **cmds[len+1]; //store all command arrays int c = 0; int pipe_c=0; int start = 0, e

假设在编译期间,我知道我有3个或n个char*cmd[]数组。 我需要把它存放在某个地方 如何存储3个或n个char*cmd[]数组

类似于在java中存储列表列表。我可以存储3或n,然后在循环中遍历它们,因为它是动态的,足以让我向其中添加任意数量的列表

对不起,我是c新手,所以不太了解指针存储

以下是我正在尝试做的:

char **cmds[len+1]; //store all command arrays
int c = 0;
int pipe_c=0;

int start = 0, end=0;
len = 3 (here)
for(int i=0; i<len; i++){ //iterate over all set of pipe arugments (x y z | x y | d)
    end = pipeIndices[i]; //end index of token to copy (excluding)
    char *cmd[end-start+1]; //create an array to store first set of tokens (x y z)
    for(start; start<end; start++){
        cmd[c++] = strdup(tokens[start]); //copy tokens from start to end
    }
    start = end+1; //next set of tokens 
    cmds[pipe_c++] = cmd; //add cmd array to cmds
}
char**cmds[len+1]//存储所有命令数组
int c=0;
int pipe_c=0;
int start=0,end=0;
len=3(此处)

对于(int i=0;iStore到底在哪里?我真的不明白你的问题。声明三个数组,你肯定可以通过它们的名称跟踪它们。你的问题太模糊了。下面是我对你想做什么的最好猜测:
char*cmd1[]={“do”,“this”},*cmd2[]={“and”,“this”},*cmd3[]={“over”,“reach”}
然后协调所有三个
char**all[]={cmd1,cmd2,cmd3};
然后可以嵌套一个
i,j
循环,并作为
all[i][j]访问每个循环
。这是前面的一个答案,我在这里介绍了如何分配字符串组,这可能是我在一篇评论中所能做的最好的事情,很高兴它有所帮助。一旦你头脑清醒过来,分配内存块来容纳指针,然后为你拥有的每个对象分配内存块,并分配开始的ad为这些块中的每一个块按照你分配的一个指针依次排列,无论你有多少个间接层次,它们都是一样的。(但这确实有助于看到所有的元素组合在一起,帮助你在脑海中找到合适的片段…)祝你编码顺利!