0
構造体メンバにテキストを渡す際に問題があります。 は、ここに私のコード文字列を別の文字列にコピー
#include <stdio.h>
#include <string.h>
typedef struct {
char *name;
int rank;
int weapons;
}player;
player create_player(char name[], int rank, int weapons);
void display_player(player data);
int main (int argc, const char * argv[])
{
player tmp = create_player("First", 3, 3);
display_player(tmp);
}
player create_player(char name[], int rank, int weapons)
{
player newobj;
char *tmp = malloc(strlen(name) + 1);
strcpy(newobj.name, tmp);
newobj.rank = rank;
newobj.weapons = weapons;
free(tmp);
return newobj;
}
void display_player(player data)
{
printf("Player name %s\n", data.name);
printf("Player rang %d\n", data.rank);
printf("Player weapons %d", data.weapons);
}
であり、ここで出力
Player name
Player rang 3
Player weapons 3
あなたは「プレイヤー名」の結果を見ることができるようです空です。 また、newobj.nameにテキストを割り当てるよりエレガントな方法を教えてください。 私は恋しいですか?
感謝を。できます。 malloc()を解放する必要がありますか、それとも自動的に解放されますか? – pr1m3x
@ user1089415 **使用を中止した後は、無料にする必要があります**。だから、 'printf'の前に無料で電話することはできません。 – cnicutar
私は自由(newobj.name)を書く必要があると思いますか? – pr1m3x