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' 전에는 free를 호출 할 수 없습니다. – cnicutar
무료 (newobj.name)로 작성해야 할 것 같습니까? – pr1m3x