3.4 문자 입출력 함수

앞 부분에서 입력 함수인 scanf 함수를 사용 하였었다. scanf 는 여러개의 값을 읽을 때는 단락문자로 구분하고, 엔터키를 눌러야 입력문자를 읽는다.

 

1. getchar / putchar

scanf 이외에도 문자를 입력 받는 함수가 있다. 그중에서 getchar 는 C 언어의 초기버전에서 만들어진 표준 입력함수로 인수가 없고, 입력되는 문자를 하나씩 읽는 함수이다. getchar 함수는 ANSI C 표준으로 정의되어 있고, stdio.h 헤더파일에 선언되어 있다.

getchar 에 대응하는 출력함수는 putchar 가 있다. 이 getchar 와 putchar 함수는 형식지정자를 사용할 필요가 없으며, 실행속도가 빠른 장점을 가진다.

 

다음 예제를 참고 하자

 

#include <stdio.h>

int main(){
       char ch;
       
       printf("enter character\n");
       ch = getchar();
       
       putchar(ch);
       printf("\n");
       return 0;
}

getchar 함수와 scanf 함수는 같은 기능을 하는 것을 알 수 있다.

 

이 두함수는 키보드로부터 문자를 입력받아 변수 ch에 기록한다. 그리고 사용자가 엔터 키를 눌러야 입력 데이터를 읽는다. 이것은 두 함수가 모두 버퍼를 통하여 데이터를 입력받기 때문이다. 버퍼는 임시 저장공간으로 여기서 버퍼는 입력된 문자를 엔터 키를 누를때까지 저장하고 있는 공간이다.

이런 버퍼를 사용하는 이유는 누를때 마다 입력 받아서 전송하는 것보다 여러줄을 한꺼번에 전송하는 것이 빠르기 때문이다.

 문자입출력함수.png

 

2. getche / getch / putch

 

입력되는 문자를 엔터 키 없이 바로 읽고 싶은 경우에는 버퍼를 사용하지 않는 getch, getche 함수를 사용한다. 두 함수의 차이는 getch는 입력받은 문자를 화면에 출력하지 않으며 getche는 입력받은 문자를 화면에 출력한다. getche의 e는 echo 라는 의미이다.

두 함수에 대응하는 출력함수는 putch 함수이다

이 함수들은 conio.h 헤더파일에 선언되어 있으며 원형은 다음과 같다.

int getch (void);

int getche (void);

int putch (int c);