프로젝트: 연락처 구조체 정의하기
Coddy C 여정의 Logic & Flow 섹션에 포함된 레슨 — 63개 중 50번째.
챌린지
쉬움실제 애플리케이션에서 구조체가 어떻게 관련 데이터를 조직화하는지 보여주는 간단한 연락처 입력 도구를 만들어 보겠습니다.
연락처 정보를 저장하기 위한 Contact 구조체를 정의하는 C 프로그램을 작성하세요. 프로그램의 요구 사항은 다음과 같습니다:
- 다음 멤버를 포함하는
Contact라는 이름의struct를 정의합니다:- 연락처 이름을 저장하기 위한 크기 50의 문자 배열
name - 연락처 전화번호를 저장하기 위한 크기 20의 문자 배열
phone - 연락처 이메일 주소를 저장하기 위한 크기 40의 문자 배열
email - 연락처 나이를 저장하기 위한 정수형
age
- 연락처 이름을 저장하기 위한 크기 50의 문자 배열
- main 함수에서:
person이라는 이름의Contact변수를 생성합니다.- 다음 입력 값들을 읽고 점(dot) 연산자를 사용하여 구조체 멤버에 할당합니다:
- 이름 문자열을 읽어
person.name에 할당합니다. - 전화번호 문자열을 읽어
person.phone에 할당합니다. - 이메일 문자열을 읽어
person.email에 할당합니다. - 나이 정수값을 읽어
person.age에 할당합니다.
- 이름 문자열을 읽어
- 모든 값을 읽은 후, 다음 유효성 검사를 수행합니다:
- 나이가 0보다 작거나 120보다 크면,
Invalid age를 출력하고 프로그램을 종료합니다. - 전화번호 길이가 10자 미만이면,
Invalid phone number를 출력하고 프로그램을 종료합니다.
- 나이가 0보다 작거나 120보다 크면,
- 모든 유효성 검사를 통과하면, 다음 형식으로 연락처 정보를 출력합니다:
Contact Information:Name: [name]Phone: [phone]Email: [email]Age: [age]
- 추가 정보를 계산하여 출력합니다:
strlen()을 사용하여 이름의 길이를 다음 형식으로 출력합니다:Name length: [length]- 나이 카테고리를 판별하여 출력합니다:
- 나이가 0에서 17 사이인 경우:
Category: Minor - 나이가 18에서 64 사이인 경우:
Category: Adult - 나이가 65세 이상인 경우:
Category: Senior
- 나이가 0에서 17 사이인 경우:
이 챌린지는 구조체 정의, 적절한 데이터 타입과 크기를 사용한 멤버 선언, 점 연산자를 이용한 구조체 멤버 접근, 입력 유효성 검사, 그리고 구조체 멤버와 함께 strlen()과 같은 문자열 함수를 사용하는 능력을 테스트합니다. 연락처 관리 시스템의 기초가 될 수 있는 실용적인 데이터 구조를 만드는 연습을 하게 될 것입니다.
직접 해보기
#include <stdio.h>
#include <string.h>
// TODO: 여기에 Contact 구조체를 정의하세요
int main() {
// TODO: person이라는 이름의 Contact 변수를 생성하세요
// 입력값 읽기
scanf("%s", /* TODO: person.name에 할당하세요 */);
scanf("%s", /* TODO: person.phone에 할당하세요 */);
scanf("%s", /* TODO: person.email에 할당하세요 */);
scanf("%d", /* TODO: person.age에 할당하세요 */);
// TODO: 아래에 유효성 검사 및 출력 코드를 작성하세요
return 0;
}