0
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));

「こんにちは」でテストしていますが、const char *group_name をコピーしたいです。

エラーが発生する

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

1 に答える 1

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

コンパイラ エラーである name メンバーを逆参照したくありません。

sizeof を使用して文字列の長さを取得することもできません。strlen() を使用します。

strcpy() の場合、最後のパラメータはコピーする文字列の長さです。宛先バッファよりも小さいことを確認してください!

于 2013-02-08T21:20:42.847 に答える