char *input[2];
input[0] = cat /etc/passwd
input[1] = grep root
我正在尝试创建一个 C 字符串的二维数组,以便
char **dArray;
dArray[0][0] = cat
dArray[0][1] = /etc/passwd
dArray[0][2] = NULL // Append NULL to mark end
dArray[1][0] = grep
dArray[1][1] = root
dArray[1][2] = NULL // Append NULL to mark end
我们如何做到这一点?
// My Code
char **p ;
char *_p[2];
_p[0] = cat /etc/passwd
_p[1] = grep root
p = malloc(2 * sizeof(char*));
for(i=0; i<2 ;i++){
p[i] = malloc(20 * sizeof(char));
}
strcpy(p[0],_p[0]);
strcpy(p[0],_p[0]);
printf("%s,%s",p[0][0],p[1]); // I except the output cat,grep root
最佳答案
由于字符串已经是一维数组,因此您将需要一个二维数组来存储与字符串本身无关的字符串组,并且每个顶部元素应在使用前分配。
类似于:
char ***dArray = malloc(sizeof(char**)*2);
dArray[0] = malloc(sizeof(char*)*3);
dArray[0][0] = "cat";
dArray[0][1] = "/etc/passwd";
dArray[0][2] = NULL;
dArray[1] = malloc(sizeof(char*)*3);
dArray[1][0] = "grep";
...
关于c - 处理二维 C 字符串时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4168801/