我刚开始用指针。所以如果这看起来很傻,请容忍我
但我找不到原因。
我有一个结构

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/

10-16 05:09