상세 컨텐츠

본문 제목

[c언어] 코딩도장 69.8 인적 정보 출력하기 문제풀이

c언어

by ~지우~ 2021. 7. 20. 11:25

본문

728x90

오늘은 코딩도장 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;
}

 

728x90

관련글 더보기

댓글 영역