首页 > 解决方案 > 如何将通过函数调用传递的字符串分配给c中的变量

问题描述

void Somefunction(char title[]){
    struct node *newnode = malloc(sizeof(struct node));
    //Assign title to newnode value
    newnode->data = ???????????
}

int main()
    char *Title[3] = {"my","cow","milk"};
    int x;
    for(x=0;x<sz;x++){
        Somefunction(Title[x]);
    }
}

请帮忙,我是c新手。

所以 Title[x] 在这个函数调用中: Somefunction(Title[x]) 携带值: 'my' 例如第一次通过。在函数定义中,如何将“我的”分配给 newnode->data

标签: c

解决方案


如果你想复制你必须给data它的地方的字符串。我假设你的结构有一个名为的成员data,它的char*.

你可以这样做:

size_t len_of_str = strlen(title);

newnode->data = (char *)malloc(len_of_str + 1);
if (NULL == newnode->data)
{
   return (NULL);
}

strncpy(newnode->data, title, len_of_str);
newnode->data[len_of_str] = '\0';

假设您的结构如下所示:

struct node{
    char *data;
    more members...
};

推荐阅读