본문 바로가기
C 프로그래밍

독학으로 배우는 C언어 016 문자 자료의 입력

by 솔토지빈 2024. 7. 21.
반응형

독학으로 배우는 C언어 016 문자 자료의 입력

Contents

     

    1. 단일 문자형 자료의 입력

    하나의 문자를 입력받아 처리한다.

     

    실습 1: 하나의 문자 입력

    다음의 프로그램을 작성하여 ex051.c 저장하고 실행해 보자.

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    int main(void)
    {
    	char a;
    	scanf("%c", &a);
    	printf("%c \n", a);
    	return 0;
    }

     

    설명 : 행 설명

    위 프로그램은 문자형을 입력받아 출력하는 프로그램이다. 문자형은 한 개의 문자만을 입력받을 수 있다. 문자형도 변수 앞에 & 을 사용해야 한다.

     

    실습 2: 두 개의 문자 입력

    다음의 프로그램을 작성하여 ex052.c 저장하고 실행해 보자.

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    int main(void)
    {
    	char a, b;
    	scanf("%c%c", &a, &b);
    	printf("%c %c\n", a, b);
    	return 0;
    }

     

    설명 : 행 설명

    입력이 in 인 경우 i a n b 에 대입된다.

    만약 i n 와 같이 중간에 공란이 있을 경우에는 스페이스가 b 에 대입되므로 주의해야 한다.

    scanf() 함수에 %c %c 사이에 공백이 있다면 상관이 없다.

     

    실습 3: 공백 무시

    ex052.c 프로그램에서 scanf() 함수에 %c %c 사이에 공백을 넣어 수정하여 ex053.c 저장하고 실행해 보자.

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    int main(void)
    {
    	char a, b;
    	scanf("%c %c", &a, &b);
    	printf("%c %c\n", a, b);
    	return 0;
    }

     

    설명 : 행 설명

    프로그램을 실행하여 다음과 같이 입력해 보고 결과를 확인해 보자.

     

    in [Enter]
    i n [Enter]
    i [Enter]
    n [Enter]
    input [Enter]

     

    결과는 모두 in이 출력된다.

     

    2. 문자열 자료의 입력

    단어를 입력할 수 있다.

     

    실습 1: 단어의 입력

    korea를 입력받아 출력하는 프로그램을 작성하여 ex054.c 저장하고 실행해 보자.

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    int main(void)
    {
    	char str[20];
    	printf(" 문자열을 입력하세요 ? ");
    	scanf("%s", str);
    	printf("%s\n", str);
    	return 0;
    }

     

    설명 : 행 설명

    문자열 자료를 입력받으려면 배열을 이용하여야 한다.

    배열은 다음에 자세히 배우기로 하고 기본적인 사항만 다루기로 하자.

    char str[20]; 은 문자열 배열이 선언되고 str 20문자의 영역이 확보된다.

    배열이 선언된 다음 scanf("%s",str); 하면 20문자 안의 범위에서 문자 자료를 입력받을 수가 있다.

    그리고 배열 변수를 사용하여 scanf() 함수로 문자열을 입력받을 때는 &를 사용하지 않는다.

     

    문제1 : 이름과 점수를 입력받아 총점과 평균 구하기

    이름, 국어, 영어, 수학, 과학 4과목 점수를 입력하여 총점과 평균을 구하는 프로그램을 작성해 보자.

    실행 결과
    이름? 홍길동
    국어? 100
    영어? 88
    수학? 90
    과학? 95


    홍길동의 점수
    총점 = 373 평균 = 93.25000

     

    정답

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    int main(void)
    {
        char name[10];
        int kor, eng, mat, sci, tot;
        float avg;
    
        printf("이름?");
        scanf("%s", name);
    
        printf("국어?");
        scanf("%d", &kor);
    
        printf("영어?");
        scanf("%d", &eng);
    
        printf("수학?");
        scanf("%d", &mat);
    
        printf("과학?");
        scanf("%d", &sci);
    
        tot = kor + eng + mat + sci;
        avg = (float)tot / 4;
    
        printf("\n");
        printf("%s의 점수\n", name);
        printf("총점 = %d ", tot);
        printf("평균 = %f ", avg);
    
        return 0;
    }

     

    3. 입력 자료의 구분

     

    입력 자료 사이의 구분을 공백이나 엔터가 아닌 사용자가 임의로 다른 문자로 구분하여 입력할 수 있다.

     

    scanf("%d,%d",&a,&b);

    20,30 [Enter]

     

    위와 같이 입력 자료 사이에 구분 표시를 , 지정하였을 경우에는 지정한 문자를 반드시 입력해야 한다.

     

    실습 1: 입력 자료의 구분

    다음의 프로그램을 작성하여 ex055.c 저장하고 실행해 보자.

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    int main(void)
    {
    	int y, m, d;
    	printf("생년월일을 입력하세요.(y/m/d)?");
    	scanf("%d/%d/%d", &y, &m, &d);
    	printf("\n 생년월일은 %d 년 %d 월 %d 일 \n", y, m, d);
    	return 0;
    }

     

    설명 : 행 설명

    scanf("%d/%d/%d", &y, &m, &d); 에서 사용한 입력 구분 문자 / 를 사용하여 입력해야 한다.

    반응형

    댓글