C言語 家系図
問題
構造体personを以下のように仮定する。
struct person {
int age;
char name[20];
struct person *father;
struct person *mother;
};
この構造体の表す人の名前、年齢、その人の父親の名前、およびその人の母親の名前を出力する関数
void print_person(struct person *p)
を作成せよ。出力の形式は
name: 本人の名前
age: 本人の年齢
father: 父親の名前
mother: 母親の名前
となるようにすること。
また、ポインタ father や mother の値が NULL のときには、名前のかわりに unknown と出力するようにせよ。
以上が問題なのですが自分でプログラムを作ってみたところ実行したら、エラーになって矯正終了されてしまいました。
以下が私の作ったプログラムです。
#include <stdio.h>
struct person {
int age;
char name[20];
struct person *father;
struct person *mother;
};
void set_name(struct person *p, char name[]) {
int i;
i = 0;
while (name[i] != 0) {
p->name[i] = name[i];
i++;
}
p->name[i] = 0;
}
void print_person(struct person *p) {
printf("name:%s", p->name);
printf("age:%s\n",p->age);
if(p->father != NULL){
printf("father:%s\n",p->father);
}
else{
printf("unknown");
}
if(p->mother != NULL){
printf("mother:%s\n",p->mother);
}
else{
printf("unknown");
}
}
int main(void) {
struct person me, dad, mom;
set_name(&me, "Michael");
me.age = 16;
me.father = &dad;
me.mother = &mom;
set_name(&dad, "David");
dad.age = 38;
dad.father = NULL;
dad.mother = NULL;
set_name(&mom, "Susan");
mom.age = 36;
mom.father = NULL;
mom.mother = NULL;
print_person(&me);
print_person(&dad);
print_person(&mom);
return (0);
}
どこが違うのか教えていただけないでしょうか?
お礼
丁寧な御回答を誠に有難う御座いました。勉強になりました。