CS50 pset5哈希表节点

时间:2019-02-21 02:38:00

标签: c hashtable cs50

我正在研究pset5的哈希表版本。我在将单词值分配给我创建的节点时遇到麻烦。除了while循环外,我什么都没有改变。我从以下行得到一个错误:node_ptr-> word = word;它给出一个错误“错误:数组类型'char [46]'无法分配。”为什么那条线不起作用?

// Buffer for a word
char word[LENGTH + 1];

// Insert words into hash table
while (fscanf(file, "%s", word) != EOF)
{
    //1) Create a node
    node *node_ptr = malloc(sizeof(node));

    //check memory != NULL
    if (!node_ptr)
    {
        return 1;
    }

    //assign values to node 
    node_ptr->word = word;
    node_ptr->next = NULL;

1 个答案:

答案 0 :(得分:0)

问题是节点结构内的数据成员word。我认为您的node被定义为

struct node
{
     char word[46];
     struct node_ptr *next;
};

因此,这种情况node_ptr->word不是可修改的左值。因此,当您进行分配node_ptr->word = word时,意味着您违反了此规则。您正在尝试修改不可修改的左值的左值(node_ptr-> word现在为左值)。对于从wordnode_ptr->word的复制字符串,应该使用strcpy更好。