初始化结构值时出错

时间:2015-08-30 23:46:00

标签: c pointers structure

我刚刚开始使用指针。如果这看起来很傻,请跟我说 但我无法找到原因。 我有一个结构

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)的;" 能帮帮我吧。谢谢你们。

1 个答案:

答案 0 :(得分:4)

您为节点分配了内存,但没有为value中的字符串分配内存。 strcpy函数将复制字节但不分配内存。它假定你已经安排了那个。在紧要关头,您可以使用strdup分配和复制字符串:

newnode->value = strdup(val);