读取链表节点内的char数组?

时间:2016-12-01 15:19:07

标签: c arrays linked-list char binary-search-tree

我正在尝试使用链接列表构建二进制搜索树。所以我的链表的结构是:

typedef struct node{
    char english[20];
    char span[60];
    struct node *left;
    struct node *right;
} BST;

我如何访问节点内的char数组来修改它?让我们说如果我有一个char english[]并且我想将它复制到节点内的数组中,我该怎么做?我用这些线但不确定它们是否正确?

int counter = 0;
    while(array[counter] != ' ')
    {
        node.english[counter] = array[counter];
        counter++;
    }

任何反馈都将不胜感激。

1 个答案:

答案 0 :(得分:1)

我猜node的类型为BST *。在这种情况下,您应该使用->访问它。

类似的东西:

int counter = 0;
while(array[counter] != ' ')
{
    node->english[counter] = array[counter];
    counter++;
}

此解决方案的问题在于它不受保护。如果数组比英语成员长,则可能会出现缓冲区溢出。此外,您使用英语获得的字符串可能不会以空值终止。

尝试使用strlcat库函数:

strlcat(node->english, array, sizeof(node->english);