动态数组的char指针

sue*_*nda 1 c multidimensional-array dynamic-arrays

我试图定义一个包含指向字符串的char指针的动态数组.字符串可以是任意长度,所以我使用了char指针.我希望每次需要存储更多值时动态调整数组大小.以下代码给出了分段错误.我做得好吗?

int main() {
    char **input=NULL;
    char *buffer;

    int i=0;

    do {
        input = (char **)realloc(input, (i+1) * sizeof(char *));

        scanf("%s", &buffer);
        strcpy(input[i++],buffer);

    } while(strlen(buffer)!=0);


}
Run Code Online (Sandbox Code Playgroud)

cni*_*tar 8

您的代码中存在多个问题.在你修复所有这些之后它才会起作用

  • 你没有分配内存buffer.如果不是下一个可能更严重的点,Scanf会写入空气
  • 你应该传递buffer给scanf,而不是&buffer
  • 你没有分配内存input[i].你只是为内存分配input.