在C中给结构指针赋值有问题吗?

在C中给结构指针赋值有问题吗?,c,pointers,struct,compiler-errors,C,Pointers,Struct,Compiler Errors,我正在构造一个具有结构的链表字典,列表中的每个节点定义如下: typedef struct node node; struct node { int key; char value[ARRAY_MAX]; node *next; }; 我遇到问题的地方是当我在insert和makedict函数中为键或值赋值时。我在作业中收到以下错

我正在构造一个具有结构的链表字典,列表中的每个节点定义如下:

typedef struct node node;
struct node
{                                                               
      int key;
      char value[ARRAY_MAX];
      node *next;
};  
我遇到问题的地方是当我在insert和makedict函数中为键或值赋值时。我在作业中收到以下错误:

node* insert(node* start, char* vinput, int kinput) {
    node* temp = start;
    while((temp->next->key < kinput) && temp->next!=NULL) {
        temp=temp->next;
    }
    if(temp->key==kinput) {
        temp->key = kinput;
        return temp;
    } else {
        node* inputnode = (node*)malloc(sizeof(node));
        inputnode->next = temp->next;
        temp->next = inputnode;
        inputnode->key = kinput;   /*error: incompatible types in assignment*/
        inputnode->value = vinput;
        return inputnode;
}
我知道我可能遗漏了一些非常明显的东西,但我一直在一遍又一遍地阅读这段代码,但都无济于事。非常感谢您的帮助。

我想这条线路

inputnode->value = vinput;
这就是编译器所抱怨的。试一试

strcpy(inputnode->value, vinput);
或者,更好的方法是将“value”字段设置为char*并执行以下操作

inputnode->value = strdup(vinput)

快速浏览,
if(temp->key==kinput)
为什么要分配
temp->key=kinput又来了?:\哦,你说得对,有点多余的代码!我想我可能把它放在那里了,因为我放弃了存储重复键输入的尝试。很好的理解:)
strdup
不是标准的C,是吗?我很可能会坚持使用strcpy,否则我必须定义strdup(我不认为它是ANSI C)您可能有strdup。包括在内。试试“男人标准”。
inputnode->value = strdup(vinput)