C递归函数传递char数组

标签 c recursion

我的功能如下:

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/

相关文章:

c - 正确的移位给出了错误的结果,有人可以解释一下吗

c - 字符串数组有多少个元素?

c - 作为迭代函数非递归运行 picoC

c - C中递归函数的段错误11

c - 如何获得最快的数据处理方式: fork or/and multithreading

c++ - 数组+整数的指针 (C++)

c - 使用 C 宏在代码中很好地组合两个选项

java - 递归地将arraylist排序为树

algorithm - 在数组递归中递增整数拆分

c - 矩阵链乘法