CS50 pset5 узлов хеш-таблицы - PullRequest
       30

CS50 pset5 узлов хеш-таблицы

0 голосов
/ 21 февраля 2019

Я работаю над хэш-версией pset5.У меня проблемы с назначением значения слова для узла, который я создал.Я ничего не изменил за пределами этого цикла.Я получаю сообщение об ошибке: 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 голосов
/ 21 февраля 2019

Проблема в том, что элемент данных word внутри структуры узла.Я думаю, что ваш node определен как

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

, поэтому этот случай node_ptr->word не является изменяемым значением lvalue.Поэтому, когда вы делаете назначение node_ptr->word = word, это означает, что вы нарушили это правило.Вы пытаетесь изменить lvalue, которое не является изменяемым lvalue (node_ptr-> word теперь является lvalue).Вы должны использовать strcpy для копирования строки из word в node_ptr->word.

...