C 언어 구조체포인터매개변수.c
#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
Comments are closed