我刚开始用指针。所以如果这看起来很傻,请容忍我
但我找不到原因。
我有一个结构
typedef struct Intermediatenode
{
int key;
char *value;
int height;
struct node *next[SKIPLIST_MAX_HEIGHT];
} node;
我用下面的函数创建一个新的节点
node *create_node(int key, char * val, int h)
{
node *newnode;
newnode=malloc(sizeof(node));
newnode->height=h;
newnode->key=key;
printf("till here %s \n",val);
printf("till here %d \n",newnode->height);
printf("till here %d \n",newnode->key);
strcpy(newnode->value,val);
printf("till here %s \n",newnode->value);
return newnode;
}
但我在这件事上犯了分割错误
strcpy(newnode->值,val)
你能帮我一下吗?非常感谢
最佳答案
您为节点分配了内存,但没有为value
中的字符串分配内存。strcpy
函数将复制字节,但不分配内存。它假设你已经安排好了。在紧要关头,您可以使用strdup
分配和复制字符串:
newnode->value = strdup(val);
关于c - 初始化结构值时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32302291/