присвоить значение указателю char?

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’

person RandomGuy    schedule 08.02.2013    source источник
comment
мой плохой strncpy((*group_list_ptr)-›(*name), привет, sizeof(*group_name));   -  person RandomGuy    schedule 09.02.2013


Ответы (1)


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

Вы не хотите разыменовывать член имени, что является ошибкой компилятора.

Вы также не можете использовать sizeof для получения длины строки. Используйте стрлен().

Для strcpy() последним параметром является длина строки, которую вы копируете. Убедитесь, что он меньше целевого буфера!

person PQuinn    schedule 08.02.2013
comment
Извините, была опечатка Структура имеет имя char *; strncpy((*group_list_ptr)-›(*name), привет, strlen(*group_name)); но тип данных в структуре — char * name. (*group_list_ptr)-›name, так почему же это работает? - person RandomGuy; 09.02.2013
comment
Хорошо, но вы по-прежнему копируете hello и удлиняете *group_name. Это тоже надо убирать. - person PQuinn; 09.02.2013
comment
Параметр name в group_list_ptr — это char*, который вы хотите передать в strncpy. Вот почему (*group_list_ptr)-›name работает. - person PQuinn; 09.02.2013