为指针char赋值?

时间:2013-02-08 21:15:48

标签: c struct strncpy

struct group {
    char *name;
    struct user *users;
    struct xct *xcts;
    struct group *next;
};

int add_group(Group **group_list_ptr, const char *group_name) {
printf("%p\n",group_list_ptr);
*group_list_ptr = malloc(sizeof(struct group));

printf("%p\n",*group_list_ptr);
printf("%p\n",(*group_list_ptr)->name);
(*group_list_ptr)->name = malloc(sizeof(*group_name));
printf("%p\n",(*group_list_ptr)->name);
strncpy((*group_list_ptr)->(*name), "hello", strlen(*group_name));
//printf("%s\n",(*group_list_ptr)->name);
return 0;

}

如何为* name指定值。在为结构分配内存后,我为名称

分配了内存
strncpy((*group_list_ptr)->(*name), "hello", strlen(*group_name));

我用“hello”测试它,但我想复制const char * group_name。

我收到错误

lists.c:24:32: error: expected identifier before ‘(’ token
lists.c:24:32: error: too few arguments to function ‘strncpy’

1 个答案:

答案 0 :(得分:1)

strncpy((*group_list_ptr)->name, "hello", strlen("hello"));

您不希望取消引用名称成员,这是编译器错误。

您也不能使用sizeof来获取字符串的长度。使用strlen()。

对于strcpy(),最后一个参数是您要复制的字符串的长度。确保它小于目标缓冲区!