带有 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]))
例如我想要它
- A L F A B E T
- A P P L E
- K我D
- 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++;
我想知道如何在 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]))
例如我想要它
- A L F A B E T
- A P P L E
- K我D
- 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++;