본문 바로가기
C언어/함수

[C언어] getchar : 한개의 문자를 읽는 함수 활용 예시 반복문

by 이얏호이야호 2023. 12. 2.

오늘은 C언어의 함수 getchar에 대해 알려드리겠습니다. getchar는 무엇일까요? C언어에서 한 문자를 읽어오는 함수입니다. 키보드같은 입력장치에서 문자를 읽어오는 방법이죠. 처음으로 C언어를 사용하면 일반적으로 겪는 문제부터, 사용 예시 등 다양하고 차근차근히 안내해드리겠습니다. 따라오세요!

 

일반적으로 겪는 문제

 

 

 

 

일반적으로 C언어를 처음하는 사용자가 겪는 문제는 이렇습니다.

숫자를 입력받고 문자를 입력받는 코드를 작성해보겠습니다. 

코드는 이렇습니다.

#include <stdio.h>

int main() {
    int input_number;
    char input_ch;

    printf("숫자를 입력하세요: ");
    scanf("%d", &input_number);
    
    printf("글자를 입력하세요: ");
    scanf(" %c", &input_ch);

    printf("------결과------\n");
    printf("숫자는 %d\n언어는 %c", input_number, input_ch);

   
}

 

결과1
결과1

오잉?  단어를 입력하고싶은데 입력은커녕 그냥 출력이 이상하게 나와버립니다. 나오지 않는 이유는 개행문자를 입력받았기 때문에 input_ch에는 현재 (' ')  공백문자가 입력되어 있고, 한개의 단어를 입력받기 떄문에 g라는 언어는 입력되지 않은 상태로 되어있습니다.

이걸 어떻게 해결해야할까요?

여기서 바로 getchar함수를 이용해주면 문제 해결이 가능합니다.

getchar함수 사용해서 문제해결하기

 

 

 

 

#include <stdio.h>

int main() {
    int input_number;
    char input_ch;

    printf("숫자를 입력하세요: ");
    scanf("%d", &input_number);
    
    // 입력 버퍼에서 개행 문자를 제거하기 위해 getchar 사용
    getchar();

    printf("글자를 입력하세요: ");
    scanf(" %c", &input_ch);

    printf("------결과------\n");
    printf("숫자는 %d\n언어는 %c", input_number, input_ch);

   
}

문제해결은 됐을까요? 결과값은 어떻게 다를까요?

결과2
결과2

getchar로 개행문자(' ') 를 없애줬기 때문에 결과값이 올바르게 나오는 모습을 확인할 수 있습니다!

문제를 해결했으니 다음으로 많이 나오는 과제인 getchar함수를 구현하는 프로그램을 작성해보도록 하겠습니다.

getchar함수 구현하기

1. 일반적인 구현방법

#include <stdio.h>

int make_Getchar() {
    int ch = getchar(); // 문자 읽기
    return ch; // 읽은 문자 반환
}

int main() {
    int input_char;

    printf("문자 입력 : ");
    input_char = make_Getchar(); // 사용자 정의 getchar 함수 호출

    printf("입력한 문자 :  %c\n", input_char);

   
}

 

결과3
결과3

2. for문을 이용해서 여러번 입력받기

#include <stdio.h>

int main() {
    int input_char;
    int num_inputs;

    printf("몇 번 문자를 입력하시겠습니까? ");
    scanf("%d", &num_inputs);
    getchar();	//버퍼비우기
    for (int i = 0; i < num_inputs; i++) {
        printf("문자 입력: ");
        input_char = getchar();
        printf("입력한 문자: %c\n", input_char);
        getchar();	//버퍼비우기
    }

    return 0;
}

결과값
결과값

getchar를 사용하면서 for문을 이용해 여러개를 반복해서 입력받고 바로 출력하는 프로그램 예시입니다.

3.while문을 이용해서 여러번 입력받기

#include <stdio.h>

int main() {
    int input_char;
    int num_inputs;
    int i = 0;

    printf("몇 번 문자를 입력하시겠습니까? ");
    scanf("%d", &num_inputs);
    getchar(); // 버퍼 비우기

    while (i < num_inputs) {
        printf("문자 입력: ");
        input_char = getchar();
        printf("입력한 문자: %c\n", input_char);
        getchar(); // 버퍼 비우기
        i++;
    }

    return 0;
}

while결과
while결과

마지막으로 while문을 활용하여 getchar를 입력받는 방법까지 소개해드렸습니다. 공부에 도움이 됐으면 좋겠습니다!

댓글