带有 realloc 的参差不齐的 *char 二维数组

ragged *char 2d array with realloc

我想知道如何在 c 中创建一个 ragget 2d string(char*)array。 (我的示例代码如下所示)

    int j = 1;
    char **array = null;
   ... read string...
   *array = (char *) realloc(sizeof(char *) * j);
   j++;
(sirAvertisment[j] = (char **) realloc((*sirAvertisment)[j],sizeof(char *) * strlen(somearray[i]))

例如我想要它

  1. A L F A B E T
  2. A P P L E
  3. K我D
  4. S E M A P H O R E S

但是有了指针,所以当我读取矩阵的 1 行时,我得到了完整的词

你的大体思路是对的,但是有些细节不对。

分配分配时不应通过指针间接访问。

您需要在分配时将 strlen() 加 1,以允许 foom 作为尾随的 null。

You shouldn't cast the result of realloc.

在重新分配原始指针之前,您应该检查 realloc() 是否成功。

为添加到数组的新元素分配内存时使用malloc()realloc() 只应在指针已初始化时使用。

char **array = null;
...
char **new_array = realloc(array, sizeof(char *) * j);
if (!new_array) {
    printf("Allocation failed!\n");
    exit(1);
}
array = new_array;
array[j] = malloc(strlen(somearray[i]) + 1);
strcpy(array[j], somearray[i]);
j++;