Menu
Coddy logo textTech

프로젝트: 연락처 구조체 정의하기

Coddy C 여정의 Logic & Flow 섹션에 포함된 레슨 — 63개 중 50번째.

challenge icon

챌린지

쉬움

실제 애플리케이션에서 구조체가 어떻게 관련 데이터를 조직화하는지 보여주는 간단한 연락처 입력 도구를 만들어 보겠습니다.

연락처 정보를 저장하기 위한 Contact 구조체를 정의하는 C 프로그램을 작성하세요. 프로그램의 요구 사항은 다음과 같습니다:

  1. 다음 멤버를 포함하는 Contact라는 이름의 struct를 정의합니다:
    • 연락처 이름을 저장하기 위한 크기 50의 문자 배열 name
    • 연락처 전화번호를 저장하기 위한 크기 20의 문자 배열 phone
    • 연락처 이메일 주소를 저장하기 위한 크기 40의 문자 배열 email
    • 연락처 나이를 저장하기 위한 정수형 age
  2. main 함수에서:
    • person이라는 이름의 Contact 변수를 생성합니다.
    • 다음 입력 값들을 읽고 점(dot) 연산자를 사용하여 구조체 멤버에 할당합니다:
      • 이름 문자열을 읽어 person.name에 할당합니다.
      • 전화번호 문자열을 읽어 person.phone에 할당합니다.
      • 이메일 문자열을 읽어 person.email에 할당합니다.
      • 나이 정수값을 읽어 person.age에 할당합니다.
    • 모든 값을 읽은 후, 다음 유효성 검사를 수행합니다:
      • 나이가 0보다 작거나 120보다 크면, Invalid age를 출력하고 프로그램을 종료합니다.
      • 전화번호 길이가 10자 미만이면, Invalid phone number를 출력하고 프로그램을 종료합니다.
    • 모든 유효성 검사를 통과하면, 다음 형식으로 연락처 정보를 출력합니다:
      • 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

이 챌린지는 구조체 정의, 적절한 데이터 타입과 크기를 사용한 멤버 선언, 점 연산자를 이용한 구조체 멤버 접근, 입력 유효성 검사, 그리고 구조체 멤버와 함께 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;
}

Logic & Flow의 모든 레슨