gpt4 book ai didi

C递归函数传递char数组

转载 作者:行者123 更新时间:2023-11-30 15:58:14 25 4
gpt4 key购买 nike

我的功能如下:

void insert(btnode **ptr, char *name, unsigned int race, unsigned int class, unsigned int id, char *guild)
{
if((*ptr) == NULL)
{
(*ptr) = (btnode*)malloc(sizeof(btnode));
(*ptr)->rec = (record*)malloc(sizeof(record));
(*ptr)->left=NULL;
(*ptr)->right=NULL;
strcpy((*ptr)->rec->name,name);
(*ptr)->rec->race = race;
(*ptr)->rec->class = class;
(*ptr)->rec->id = id;
strcpy((*ptr)->rec->guild, guild);
}
else
{
if((*ptr)->rec->id > id)
{
insert(&((*ptr)->left),name,race,class,id,guild);
}
else
{
insert(&((*ptr)->right),name,race,class,id,guild);
}
}
}

用于将值插入二叉树

我遇到的问题是当第一个节点为空时一切正常。但是,当函数必须调用其自身时,字符数组不会打印其含义。

有什么建议可以解决这个问题吗?

编辑:添加了完整代码,仅使用未签名的整数字符没有问题。

结构减速度:

#define TWOBYTEINT 16
#define FOURBYTEINT 32
#define MAXIMUMLINE 70
#define FALSE 0
#define TRUE 1

typedef struct record
{
char name[13];
unsigned int race : TWOBYTEINT;
unsigned int class : TWOBYTEINT;
unsigned int id : FOURBYTEINT;
char guild[30];
}__attribute__((packed)) record;

typedef struct node
{
record * rec;
struct node *right, *left;
}btnode;

最佳答案

strcpy 看起来非常狡猾 - 它们看起来正在复制到 (*ptr)->rec 结构中未初始化内存所指向的未分配内存。

令人惊讶的是您的代码没有崩溃。

关于C递归函数传递char数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9904505/

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