#include <stdio.h>
#include <string.h>
// 사람 정보
struct Person {
    char Name[10];
    int Age;
    int Height; 
};
// 입력 전담 함수
void Input(struct Person *p) {
    int i;
    for (i = 0; i < 2; i++) {
        printf("이름 : "); scanf("%s", &p->Name); 
        printf("나이 : "); scanf("%d", &p->Age); 
        printf("키 : "); scanf("%d", &p->Height); 
        p++; 
    }
}
// 로직 처리 전담 함수 : 나이가 많은 사람순으로 정렬
struct Person*  Process(struct Person p[]) {
    int i, j;
    struct Person temp; 
    for (i = 0; i < 1; i++) {
        for (j = i + 1; j < 2; j++) {
            if (p[i].Age < p[j].Age) {          // strcpy() : 문자열 복사
                strcpy(temp.Name, p[i].Name);   // 이름치환
                strcpy(p[i].Name, p[j].Name); 
                strcpy(p[j].Name, temp.Name); 
                temp.Age = p[i].Age; p[i].Age = p[j].Age; p[j].Age = temp.Age;
                temp.Height = p[i].Height; p[i].Height = p[j].Height;
                p[j].Height = temp.Height;
            }
        }
    }
    return p;
}
// 출력 전담함수
void Output(struct Person *p) {
    int i;
    printf("\n이름 나이 키\n");
    for (i = 0; i < 2; i++) {
        printf("%8s %2d %3d\n", p->Name, p->Age, p->Height);
        p++; 
    }
}
void main(void) {
    //[1] Init
    struct Person p[2]; // Person 구조체 배열 선언 
    //[2] Input
    Input(p); // 구조체배열의 시작주소 
    //[3] Process : memcpy() : 구조체 복사(문자열 복사)
    memcpy(p, (struct Person*)Process(p), sizeof(p)); 
    //[4] Output
    Output(p); 
}

 

Comments

Be the first to post a comment

Post a comment