gpt4 book ai didi

C: 链表节点的malloc (struct within struct)

转载 作者:太空宇宙 更新时间:2023-11-04 08:14:17 25 4
gpt4 key购买 nike

我在创建链表节点时使用 malloc 动态分配内存时遇到困难。

对于我的作业,我们必须使用以下结构定义:

typedef struct course {
char *name;
BST students;
} Course;

typedef struct courseNode {
Course data;
struct courseNode *next;
} *CourseList;

CourseList 结构是实际的链表节点,而 Course 结构包含类(class)名称和注册学生的二叉搜索树。您会注意到结构 Course 位于结构 CourseList 中。

我需要创建一个新的 CourseList 节点,给定一个字符串用作内部 Course 结构的 name 字段,使用基于长度的动态分配字符串。我已尝试根据字符串的长度分配外部和内部结构的所有组合,但我似乎无法将 name 字符串正确复制到内部结构中。我确信有一个简单的答案,但我没有找到。

最佳答案

I've tried all combinations of mallocing the outer and inner structs based on the string's length, but I can't seem to get the name string properly copied into the inner struct.

那是因为字符串的长度不会改变您分配具有固定大小的 struct 的方式。 String需要单独分配,分配给CourseListdata成员的name成员:

CourseList newNode = malloc(sizeof(*newNode));
newNode->data.name = malloc(strlen(name)+1);
strcpy(newNode->data.name, name);

注意 newNode 前面的星号。这是因为 CourseList 是一个指针类型。

关于C: 链表节点的malloc (struct within struct),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36684634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com