본문 바로가기

C\C++

Structure Input/Output

개요

구조체를 이용하여 입력을 받고 출력하라.

목표

입력화면
가족(아빠)의 성을 입력하세요 = 박
가족(엄마)의 성을 입력하세요 = 김
1 번째 가족 신상을 입력합니다.
가족관계를 선택하세요. 부(0), 모(1), 형제(2), 자매(3) = 0
이름을 입력하세요 = 장군
나이를 입력하세요 = 50
전화 번호를 입력하세요 = 010-1111-2222
2 번째 가족 신상을 입력합니다.
가족관계를 선택하세요. 부(0), 모(1), 형제(2), 자매(3) = 1
이름을 입력하세요 = 사랑
나이를 입력하세요 = 40
전화 번호를 입력하세요 = 010-2222-3333
3 번째 가족 신상을 입력합니다.
가족관계를 선택하세요. 부(0), 모(1), 형제(2), 자매(3) = 2
이름을 입력하세요 = 왕자
나이를 입력하세요 = 20
전화 번호를 입력하세요 = 010-3333-4444
4 번째 가족 신상을 입력합니다.
가족관계를 선택하세요. 부(0), 모(1), 형제(2), 자매(3) = 3
이름을 입력하세요 = 공주
나이를 입력하세요 = 15
전화 번호를 입력하세요 = 010-4444-5555

출력화면
######################################
관계 성명 나이 전화번호
Father 박 장군 50 010-1111-2222
Mother 김 사랑 40 010-2222-3333
Brother 박 왕자 20 010-3333-4444
Sister 박 공주 15 010-4444-5555

Flow Chart


Code

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define MAX_LN 4
#define MAX_FN 10

typedef enum FamilyRealation{Father,Mother,Brother,Sister}FR_e;

typedef struct _MEMBER
{
	FR_e eFR;
	char sLastName[MAX_LN];
	char sFirstName[MAX_FN];
	short iAge;
	char sTelNum[15];
}MEM_s;

void structInput(MEM_s* fInput, int i);
void FRPrint(int fr);

void structInput(MEM_s* fInput,int i)
{
	puts("=========================================");
	printf("%02d번째 가족 신상을 입력합니다.\n",i+1);
	printf("가족관계를 입력하세요. 부(0), 모(1), 형제(2), 자매(3) : ");
	scanf_s("%d", &fInput->eFR);
	printf("이름을 입력하세요 : ");
	scanf_s("%s", fInput->sFirstName, (unsigned)sizeof(fInput->sFirstName));
	printf("나이를 입력하세요 : ");
	scanf_s("%hd", &fInput->iAge);
	printf("전화 번호를 입력하세요 : ");
	scanf_s("%s", fInput->sTelNum,(unsigned)sizeof(fInput->sTelNum));
}

void FRPrint(int fr)
{
	char sFR[8] = { 0 };
	switch (fr) {
	case 0:
		strcpy_s(sFR,8, "Father"); break;
	case 1:
		strcpy_s(sFR,8, "Mother"); break;
	case 2:
		strcpy_s(sFR,8, "Brother"); break;
	case 3:
		strcpy_s(sFR,8, "Sister"); break;
    default:
		strcpy_s(sFR, 8, "Unknown"); break;
	}
	printf("%s\t", sFR);
}

int main(void)
{
	int iNum = 0;
	char sFatherFamilyName[4] = { 0 }, sMotherFamilyName[4] = { 0 };
	MEM_s* sPtr = NULL;

	printf("가족의 인원을 입력하세요 : ");
	scanf_s("%d", &iNum);

	sPtr = (MEM_s*)malloc((unsigned)sizeof(MEM_s) * (iNum) * 1);

	printf("가족(아빠)의 성을 입력하세요 : ");
	scanf_s("%s", sFatherFamilyName, (unsigned)sizeof(sFatherFamilyName));
	printf("가족(엄마)의 성을 입력하세요 : ");
	scanf_s("%s", sMotherFamilyName, (unsigned)sizeof(sMotherFamilyName));
	for (int i = 0; i < iNum; i++) {
		structInput(&sPtr[i], i);
		if (sPtr[i].eFR == Mother) {
			strcpy_s(sPtr[i].sLastName,MAX_LN, sMotherFamilyName);
		}
		else {
			strcpy_s(sPtr[i].sLastName,MAX_LN, sFatherFamilyName);
		}
	}
	puts("\n#######################################");
	printf("관계\t성명\t나이\t전화번호\n");
	for (int i = 0; i < iNum; i++) {
		FRPrint(sPtr[i].eFR);
		printf("%s %s\t", sPtr[i].sLastName, sPtr[i].sFirstName);
		printf("%2d\t", sPtr[i].iAge);
		printf("%s\n", sPtr[i].sTelNum);
	}

	free(sPtr);
	return 0;
}

Output

'C\C++' 카테고리의 다른 글

String 관련 예제  (0) 2022.02.27
구조체 실습과제 01  (0) 2022.02.23
소수 구하기 2  (0) 2022.02.18
소수 구하기  (0) 2022.02.17
Pointer & Array Ex01  (0) 2022.02.17