getchar() - Buffered I/O
키보드 장치의 입출력을 위해 할당된 버퍼에서 한 글자를 빼내서 반환해주는 함수라 할 수 있습니다.
버퍼의 내용을 보면 맨 마지막에 \n이 들어 있는 것을 볼 수 있습니다. 마지막에 Enter키를 눌렀을때 \n 버퍼안에 있으므로
플러싱 작업을 해줘야 한다.
#include <stdio.h> int main(void) { char ch = 0; ch = getchar(); putchar(ch); ch = getchar(); putchar(ch); ch = getchar(); putchar(ch); ch = getchar(); putchar(ch); ch = getchar(); putchar(ch); return 0; }
_getch(), _getche() - Non-Buffered I/O
getchar() 함수는 사용자가 입력한 문자가 어떤 것인지 그 정보 자체를 다루려는 목적이 강한 반면 _getch(),_getche()함수는 어떤 문자가 입력된 것인지 구체적인 정보를 알려는 목적보다는 단지 아무 키나 눌려서 사용자 입력이 발생했음을 감지하려는 목적이 더 강합니다.
#include <stdio.h> #include <conio.h> int main(void) { char ch = 0; printf("아무 키나 누르면 다음으로 넘어갑니다. \n"); ch = _getch(); printf("입력한 키는 "); putchar(ch); printf("입니다.\n"); return 0; }
글자를 입력하는 과정에서 getchar()함수처럼 문자열을 입력하고 입력의 완료를 위해 Enter 키를 누를 필요가 없습니다. 왜냐하면 _getch()함수가 한 글자라도 입력되면 즉시 반환하기 때문입니다. 그리고 어떤 키가 눌렸는지 화면에 보이지 않습니다. 그러나 _getche()함수는 어떤 키가 눌렸는지 화면에 출력하고 함수가 반환한다는 점에서 차이가 있습니다.
버퍼를 거쳐 정보의 입출력이 이루어지는 것을 Buffered I/O라고 합니다. 반대로 버퍼를 이용하지 않는 입출력을 Non-Buffered I/O라고 합니다.
[ 출저 ] - 명강의로 완성하는 C 프로그래밍
'C' 카테고리의 다른 글
[C] - 환경변수 출력 (0) | 2014.09.08 |
---|---|
[C] - const 포인터 사용법 (0) | 2014.09.08 |
[C] - 스캔셋(Scanset) (0) | 2014.09.08 |
[C] - scanf() 함수 (0) | 2014.09.08 |
[C] - 동적으로 할당된 메모리 크기 알기 (0) | 2014.09.08 |