C 分配结构并在其中保存字符串

C 分配结构并在其中保存字符串,c,memory,malloc,C,Memory,Malloc,我在让create在此处举办firstE时遇到问题: struct node { char * data; struct node * next; }; struct node * createList(char * firstE){ struct node *create; create = malloc(sizeof(struct node)); create->data = malloc(sizeof(struct node)); strcpy(c

我在让create在此处举办firstE时遇到问题:

struct node {
    char * data;
    struct node * next;
};

struct node * createList(char * firstE){
  struct node *create;

  create = malloc(sizeof(struct node));
  create->data = malloc(sizeof(struct node));
  strcpy(create->data, firstE);
  create->next = NULL;
  return create;
}

我对
create->data
的内存分配有问题。我试图让它保持
first
的值,但我似乎无法获得它。

由于没有结构定义,我不得不猜测您的问题。第二个
malloc
为与结构类型相同的字段分配内存。但是因为您使用strcpy从函数参数复制,我建议这一行是不正确的,它分配了错误的内存量

create->data = malloc(sizeof(struct node));
strcpy(create->data, firstE);
由于您将字符串参数复制到此字段,因此我建议

create->data = malloc(1 + strlen(firstE));
strcpy(create->data, firstE);

1+
允许字符串终止符。

struct node{char*data;struct node*next;};很抱歉没有包括struct def。非常感谢您的帮助。@Luis:欢迎来到Stack Overflow!请阅读介绍,熟悉基本知识。如果某个答案对你有帮助,你可以[将其标记为已接受](当有人回答我的问题时,我该怎么办?)。(事实上,这样做比评论“谢谢”更受欢迎。)