69.8 심사문제: 인적 정보 출력하기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
struct Person {
char name[30];
int age;
void (*print)(struct Person *);
};
void print(struct Person *p)
{
printf("%s %d\n", p->name, p->age);
}
void executer(void (*fp[])(struct Person *), struct Person p[], int count)
{
for (int i = 0; i < count; i++)
{
fp[i](&p[i]);
}
}
void (*getPrintFunc(struct Person *p))(struct Person *)
{
return print;
}
int main()
{
struct Person p[3];
p[0].print = print;
p[1].print = print;
p[2].print = print;
scanf("%s %d %s %d %s %d",
p[0].name,& p[0].age,
p[1].name,& p[1].age,
p[2].name,& p[2].age
);
void (*fp[3])(struct Person *);
for (int i = 0; i < sizeof(p) / sizeof(struct Person); i++)
{
fp[i] = getPrintFunc(&p[i]);
}
executer(fp, p, sizeof(p) / sizeof(struct Person));
return 0;
}
'C_study' 카테고리의 다른 글
[C] 코딩도장 71 : 파일에서 문자열을 읽고 쓰기 (0) | 2021.08.19 |
---|---|
[C] 코딩도장 70 : 파일에서 문자열을 읽고 쓰기 (0) | 2021.08.18 |
[C] 코딩도장 68 : 함수 포인터 사용하기 (0) | 2021.08.15 |
[C] 코딩도장 67 : 함수에서 재귀호출 사용하기 (0) | 2021.08.14 |
[C] 코딩도장 66 : 함수에서 가변 인자 사용하기 (0) | 2021.08.13 |