动态分配字符串数组
问题描述:
我想动态地分配字符串数组,但我不知道我该如何做到这一点。所以我想构建一个结构并动态分配这个结构。所以我做了下面的代码,但是这段代码创建断言失败。动态分配字符串数组
#include <stdio.h>
#include <stdlib.h>
typedef struct {
char str1[20];
char str2[20];
} String;
int main(void)
{
String * list;
list = (String *)malloc(sizeof(String));
int i = 1;
for (; i < 6; i++) {
realloc(list, i * sizeof(String));
printf("Input String 1: ");
scanf("%s", list[i - 1].str1);
printf("Input String 2: ");
scanf("%s", list[i - 1].str2);
}
for (i = 0; i < 5; i++)
printf("%s\t%s\n", list[i].str1, list[i].str2);
free(list);
}
我做了什么错,我该如何解决这个问题?
谢谢:)
答
为realloc
手册页说:
的realloc()的函数返回一个指向新分配 内存,专为适应任何类型的变量取向,并可与ptr不同,为 ;如果请求失败,则为NULL。
新指针可以从你传递给realloc
的不同,所以你需要收集和使用由realloc
返回的指针。
答
的结构总是具有相同的尺寸,以便与该实施你总是与具有大小的数组被卡住2.
甲方式来声明一个字符串数组(它们本身的字符阵列)类做
char **string;
如果你想20个字符串数组那么这会是:
string = malloc(sizeof(char*)*20);
的Structs必须有固定的大小,所以我不认为编译器将LIK你试图为结构分配更多的内存而不是定义它。
你扔掉'realloc'的结果。 – BLUEPIXY