c - 在 C 中访问结构体中的结构体

标签 c list struct tree linked-list

这只是一个非常简短的问题,实际上源于另一篇文章,如果我要从我的 TreeNode 访问 ListNode 中的 char *number,以便每个 TreeNode 都有自己的数字链接列表,我是否可以将其访问为如下(其中 TreeNode *root):

root->name = strdup(name); root->numbers->number = strdup(number);

干杯!

typedef struct ListNode {
  char            *number;
  struct ListNode *next;
}ListNode;

typedef struct TreeNode {
  char            *name;
  ListNode        *numbers;
  struct TreeNode *left;
  struct TreeNode *right;
}TreeNode;

编辑:这是我向该节点添加 TreeNode 和列表的函数:

int main(void) {
char my_string[50], name[25], number[25];
TreeNode *root = NULL;
ListNode *list = NULL;
while ((fgets(my_string, 50, stdin)) != NULL) {
    if (my_string[0] == '.')
        break;      
sscanf(my_string, "%s %s", name, number); 
root = AddNode(root, list, name, number);
}   
return 0;
}

TreeNode* AddNode(TreeNode *root, ListNode *list, char *name, char *number) {
int comparison;
if ( root == NULL) {
    root = (TreeNode *)malloc(sizeof(TreeNode));
    list = (ListNode *)malloc(sizeof(ListNode));
    root->name = strdup(name); root->numbers->number = strdup(number);
    root->left = root->right = NULL;

最佳答案

问题是您传递了一个指向 ListNode 的指针,但随后对 ListNode 进行了 malloc,分配给它,但没有对它执行任何操作。我不确定你的意图是什么:

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

出现段错误的原因是您分配了一个 TreeNode,但没有分配其中的 ListNode。你需要做的是:

root = (TreeNode *)malloc(sizeof(TreeNode));
root->numbers = (ListNode *)malloc(sizeof(ListNode));

或者,如果这就是您打算对 malloc 的 ListNode 执行的操作,则需要对其进行分配:

root = (TreeNode *)malloc(sizeof(TreeNode));
list = (ListNode *)malloc(sizeof(ListNode));
root->numbers = list;

关于c - 在 C 中访问结构体中的结构体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8196262/

相关文章:

c - 这个字符串如何运行?

c# - 我的排序有什么问题?

python - 如何将二进制数字列表变成点分十进制数字列表?

c - 释放指向结构的指针导致程序获得 "stuck"

c - 如何修复我的代码以读取返回指向结构的指针的函数中的字符串

c - 为什么要向以下 C 代码发送 SIGSEGV 信号?

c - 尝试在 z/OS HLASM 和 XL C/C++ 金属 C 编译器之间创建 "bilingual macros"

c - 如何在c中的套接字编程中从服务器程序调用另一个服务器程序

python - 将列表列表和 "distributing"元素从另一个列表获取到子列表的 Pythonic 方法是什么?

c - 错误 :request for member 'id' in something not a structure or union