Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어 문자 입출력 완벽 정리: getche(), putchar(), getch() 함수 활용법

C 언어의 문자 입출력이란?

C 프로그래밍 언어에서 문자를 읽고 쓰는 작업은 콘솔 입출력(Console I/O) 함수를 통해 수행됩니다. 그중 가장 단순한 형태의 함수가 바로 키보드로부터 문자 하나를 읽어 들이는 getche()와, 화면에 문자 하나를 출력하는 putchar()입니다.

getche() 함수

getche() 함수는 사용자가 키를 누를 때까지 대기하다가, 키가 입력되면 해당 문자 값을 반환합니다. 또한 입력된 키는 자동으로 화면에 에코(echo)되어 나타나므로, 사용자가 자신이 입력한 문자를 즉시 확인할 수 있습니다.

putchar() 함수

putchar() 함수는 인자로 전달된 문자를 현재 커서가 위치한 지점에 화면에 출력합니다.

함수 선언

두 함수의 선언은 다음과 같습니다.

int getche(void);
int putchar(int c);

getche()와 putchar()의 헤더 파일은 CONIO.H입니다.

예제: 대소문자 반전 프로그램

다음 예제는 키보드로부터 문자를 읽어 들여 대소문자를 반전시켜 출력하는 프로그램입니다. 즉, 대문자는 소문자로, 소문자는 대문자로 변환하여 화면에 표시합니다.

프로그램은 마침표(.)가 입력되면 종료됩니다. 이때 사용되는 라이브러리 함수 islower()는 인자가 소문자이면 참(true)을, 아니면 거짓(false)을 반환하며, 이 함수를 사용하려면 헤더 파일 CTYPE.H가 필요합니다.

문자 읽기와 쓰기를 구현한 C 프로그램은 다음과 같습니다.

#include <stdio.h>
#include <conio.h>
#include <ctype.h>

main(void) {
    char ch;
    printf("enter chars, enter a period to stop\n");
    do {
        ch = getche();
        if (islower(ch))
            putchar(toupper(ch));
        else
            putchar(tolower(ch));
    } while (ch != '.'); /* 마침표 입력 시 종료 */
    return 0;
}

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

enter chars, enter a period to stop
tTuUtToOrRiIaAlLsS..

입력한 't'가 'T'로, 'T'가 't'로 변환되어 출력되는 것을 확인할 수 있습니다.

getche()의 두 가지 변형 함수

getche()에는 동작 방식이 조금씩 다른 두 가지 중요한 변형 함수가 있습니다.

1. getchar()

  • getchar()의 문제점은 입력을 버퍼링(buffering)한다는 점입니다. 즉, 사용자가 엔터(캐리지 리턴)를 누르기 전까지는 입력된 문자가 프로그램에 전달되지 않습니다.
  • getchar() 함수는 STDIO.H 헤더 파일을 사용합니다.

2. getch()

  • getch()는 getche()와 정확히 같은 방식으로 동작하지만, 입력한 문자가 화면에 에코되지 않는다는 차이점이 있습니다. 비밀번호 입력처럼 화면에 문자를 숨겨야 하는 경우에 유용하게 사용됩니다.
  • getch() 함수는 CONIO.H 헤더 파일을 사용합니다.

정리

C 언어의 문자 입출력 함수를 요약하면 다음과 같습니다.

  • getche(): 키 입력을 즉시 읽고 화면에 에코 (CONIO.H)
  • getch(): 키 입력을 즉시 읽지만 에코하지 않음 (CONIO.H)
  • getchar(): 버퍼링된 입력을 사용하며 엔터 입력 후 처리 (STDIO.H)
  • putchar(): 문자 하나를 화면에 출력 (CONIO.H)

상황에 맞는 적절한 함수를 선택하면 콘솔 기반 프로그램의 사용자 경험을 크게 향상시킬 수 있습니다.