我已经坚持了一段时间了!

我必须使用这个给定的结构:

typedef struct ArList
{
    char **array; // pointer to array of strings
    int size; // number of elements
    int capacity = 10; // length of array
} ArList;


通过使用函数创建动态分配的Arlist(这是我应该进入的位置:

ArList *createArList(int length)


给出的说明:第一个目标是创建一个ArList

ArList* list = malloc(sizeof(ArList));


然后,我必须初始化内部数组:

list->size = 0; //Given as initially 0
list->array[list->size];


最后,(稍后出现,但是我现在想测试),我必须将字符串复制到数组的元素中。

strcpy(ArList[0], "CAT");


此时,我运行代码以查看运行情况,并输出单词“ CAT”,但随后立即崩溃。

我刚刚开始学习结构和内存分配,现在似乎一切都令人困惑。

这是用于C编程的。

最佳答案

您不能使用list->array[list->size]进行分配,请使用:

list->array = malloc(sizeof(char*)*list->size);


然后当您要填充数组时:

list->array[0] = strdup("CAT");


如果我正确理解您要做什么。

09-05 05:11