C 将字符指针与要插入到二进制搜索树中的字符串进行比较

C 将字符指针与要插入到二进制搜索树中的字符串进行比较,c,string,pointers,C,String,Pointers,我对c相当陌生,但我正在为一个类项目制作一个二进制搜索树。我需要插入字符串的字符指针,无论它们是单字还是引号中的字符串短语。我很难弄清楚如何正确地比较这些字符指针以将它们插入到我的树中。我已经附上了我目前为我的插入功能所拥有的东西;对于任何小错误,我很抱歉,就像我说的,我对C非常陌生。我只是不知道我是否能够使用stmcpy或者什么是最好的方法 void insert(char *d) { node *n = newNode(d); insertData(root, n); }

我对c相当陌生,但我正在为一个类项目制作一个二进制搜索树。我需要插入字符串的字符指针,无论它们是单字还是引号中的字符串短语。我很难弄清楚如何正确地比较这些字符指针以将它们插入到我的树中。我已经附上了我目前为我的插入功能所拥有的东西;对于任何小错误,我很抱歉,就像我说的,我对C非常陌生。我只是不知道我是否能够使用stmcpy或者什么是最好的方法

void insert(char *d)
{
    node *n = newNode(d);
    insertData(root, n);
}

void insertNode(node *a, node *b)
{
    if (a == NULL)
    {
        root = b;
        size++;
        root->freq++;
    }else if ((strcmp(b->data, a->data)) < 0)
    {
        if(a->left == NULL)
        {
            a->left = b;
            b->freq = 1;
        }else
        {
            insertData(a->left, b);
        }
    }else if ((strcmp(b->data, a->data)) > 0)
    {
        if(a->right == NULL)
        {
            a->right = b;
            b->freq = 1;
        }else
        {
            insertData(a->right,b);
        }
    }else
    {
        a->freq++;
    }
}
void插入(char*d)
{
节点*n=新节点(d);
插入数据(根,n);
}
void insertNode(节点*a、节点*b)
{
如果(a==NULL)
{
根=b;
大小++;
root->freq++;
}否则如果((strcmp(b->data,a->data))<0)
{
如果(a->left==NULL)
{
a->left=b;
b->freq=1;
}否则
{
插入数据(a->左,b);
}
}如果((strcmp(b->data,a->data))>0,则为else
{
如果(a->right==NULL)
{
a->右=b;
b->freq=1;
}否则
{
插入数据(a->右侧,b);
}
}否则
{
a->freq++;
}
}

我没有看到具体的问题,作为对一般问题的回答,您应该使用strcmp来比较字符串,看起来您使用得非常正确。
strcmp
使用得非常正确。访问
节点::数据时可能出现问题。如果你能展示
节点的定义,那就更好了。你能发布足够多的代码,让我们可以重现我们这边的错误吗?另外,您有什么具体的错误?单词和多词在这里不重要。我看不出具体的问题,作为对一般问题的回答,您应该使用strcmp来比较字符串,看起来您使用得非常正确。
strcmp
使用得非常正确。访问
节点::数据时可能出现问题。如果你能展示
节点的定义,那就更好了。你能发布足够多的代码,让我们可以重现我们这边的错误吗?另外,您有什么具体的错误?单词和多词在这里不重要。