在第一个数组中遇到特定字符后,我试图将第二个数组中的最后一个元素设置为char **
。
int test(char ** args){
char ** chmd1;
for(int i = 0; args[i] != NULL; ++i){
if(!strncmp(args[i], "<", 1)){
chmd1[i] = NULL;
break;
}
chmd1[i] = args[i];
}
for(int i = 0; chmd1[i] != NULL; ++i){
printf("%s", chmd1[i]);
}
return 0;
}
这个代码segfaults作为第二个for循环继续进行更多的迭代,超过
NULL
应该在的地方。我只想通过操纵指针而不使用任何malloc就可以做到这一点,但我完全被卡住了。
最佳答案
这个代码segfaults作为第二个for循环继续进行更多的迭代,超过空值应该在哪里。
您还没有为chmd1
分配内存,但您正在使用它,就像它指向有效内存一样。
我只想通过操纵指针而不使用任何malloc就可以做到这一点,但我完全被卡住了。
你不能那样做。在使用之前,您可以使用malloc
(或malloc
函数组中的其他函数之一:calloc
,realloc
)为chmd1
分配内存。
关于c - 将char **数组的特定元素设置为NULL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29814469/