오늘은 코딩도장 69.8 심사문제 풀이를 해보겠습니다.
<문제> 표준 입력으로 3명의 인적 정보가 입력됩니다(홀수 번째는 이름, 짝수 번째는 나이). 다음 소스 코드에서 getPrintFunc 함수를 작성하여 입력된 인적 정보가 각 줄에 출력되게 만드세요.
for (int i = 0; i < sizeof(p) / sizeof(struct Person); i++)
{
fp[i] = getPrintFunc(&p[i]);
}
이 코드를 보면 getPrintFunc 함수의 인자는 구조체의 메모리 주소이고, return값은 구조체의 멤버 print입니다.
#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 p->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언어] 코딩도장 71.11 파일을 읽은 뒤 거꾸로 저장하기 문제풀이 (0) | 2021.07.22 |
---|---|
[c언어] 코딩도장 71.9 파일 크기만큼 파일 읽기 문제풀이 (0) | 2021.07.21 |
[c언어] 코딩도장 79.8 정적 변수 선언하기 문제풀이 (0) | 2021.07.19 |
[c언어] 코딩도장 53.7 나이가 가장 많은 사람 찾기 문제풀이 (4) | 2021.07.17 |
[c언어] 코딩도장 31.7 산 모양으로 별 출력하기 문제풀이 (0) | 2021.07.16 |
댓글 영역