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("%pn",group_list_ptr);
*group_list_ptr = malloc(sizeof(struct group));
printf("%pn",*group_list_ptr);
printf("%pn",(*group_list_ptr)->name);
(*group_list_ptr)->name = malloc(sizeof(*group_name));
printf("%pn",(*group_list_ptr)->name);
strncpy((*group_list_ptr)->(*name), "hello", strlen(*group_name));
//printf("%sn",(*group_list_ptr)->name);
return 0;
}
如何为*name赋值。在我为结构分配内存后,我为名称分配了内存
strncpy((*group_list_ptr)->(*name), "hello", strlen(*group_name));
我正在用"你好"测试它,但我想复制constchar*group_name。
我收到错误
lists.c:24:32: error: expected identifier before ‘(’ token
lists.c:24:32: error: too few arguments to function ‘strncpy’
strncpy((*group_list_ptr)->name, "hello", strlen("hello"));
您不希望取消引用名称成员,这是编译器错误。
您也不能使用sizeof来获取字符串的长度。使用strlen((。
对于strcpy((,最后一个参数是要复制的字符串的长度。请确保它小于目标缓冲区!