在第一个数组中遇到特定字符后,我试图将第二个数组中的最后一个元素设置为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函数组中的其他函数之一:callocrealloc)为chmd1分配内存。

关于c - 将char **数组的特定元素设置为NULL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29814469/

10-09 09:00