C 分配结构并在其中保存字符串
我在让create在此处举办firstE时遇到问题: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
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!请阅读介绍,熟悉基本知识。如果某个答案对你有帮助,你可以[将其标记为已接受](当有人回答我的问题时,我该怎么办?)。(事实上,这样做比评论“谢谢”更受欢迎。)