在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)