私は明らかにここでprintfを非難していません、おそらく私のmemの割り当てとアクセスを台無しにしましたが、どこで間違ったのか理解できません。mainの2番目のprintfでプログラムがクラッシュします。2番目のものにコメントすると、3番目にもクラッシュします。実際、最初のprintfの後でpにアクセスするたびにクラッシュします!
誰かが私が間違っていることを説明できますか?
どうもありがとう。
typedef struct
{
char * firstname;
char * lastname;
int age;
} person;
person * new_person(char * firstname, char * lastname, int age)
{
person p;
int lf = strlen(firstname);
int ll = strlen(lastname);
p.firstname = (char *)malloc(++lf * sizeof(char));
p.lastname = (char *)malloc(++ll * sizeof(char));
strcpy(p.firstname, firstname);
strcpy(p.lastname, lastname);
p.age = age;
return &p;
}
int main()
{
person * p = new_person("firstname", "last", 28);
printf("nom : %s ; prenom : %s ; age : %d\n", p->lastname, p->firstname, p->age);
printf("nom : %s ; prenom : %s ; age : %d\n", p->lastname, p->firstname, p->age);
printf("nom : %s ; prenom : %s ; age : %d\n", (*p).lastname, (*p).firstname,(*p).age);
return 0;
}