我正在研究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;
答案 0 :(得分:0)
问题是节点结构内的数据成员word
。我认为您的node
被定义为
struct node
{
char word[46];
struct node_ptr *next;
};
因此,这种情况node_ptr->word
不是可修改的左值。因此,当您进行分配node_ptr->word = word
时,意味着您违反了此规则。您正在尝试修改不可修改的左值的左值(node_ptr-> word现在为左值)。对于从word
到node_ptr->word
的复制字符串,应该使用strcpy更好。