글
이번에는, 사용자로부터 키보드 입력값을 에코 없이 가져오는 방법에 대해서 설명드리겠습니다. 에코라는 것은, 사용자가 키보드 입력을 한 경우에, 콘솔창에 문자가 그대로 출력되는 것을 말합니다. 에코를 출력하는 대표적인 사용자 키보드 입력 함수는 scanf 가 있습니다. 즉, 사용자가 키보드 입력을 하면 콘솔에 출력하지 않고, 바로 그 입력값을 넘겨주는 예제에 대해서 알아보려고 합니다.
#include <stdio.h> #include <conio.h> enum{ False, True }; int main(int argc, char* argv[]){ int ch; while (True){ ch = _getch(); if (ch == 'Q'){ printf("프로그램 종료\n"); break; } printf("입력된 키 값 (정수) : %d\n", ch); } return 0; }
4 ~ 6 라인
참, 거짓을 표현하기 위한 열거형 상수를 정의합니다. 거짓은 False ( = 0 ), 참은 True ( = 1) 로 각각 표현합니다.
11 라인
_getch 함수를 호출하여 에코 없이 사용자 키보드 입력을 받아서, 문자 한 개의 정수 값을 ch 변수에 저장합니다. _getch 함수와 반대로 scanf 는 대표적인 에코를 출력하면서 사용자 키보드 입력을 받는 함수입니다.
12 ~ 15 라인
입력 받은 문자가 대문자 Q 인 경우에 프로그램을 종료합니다.
16 라인
만약, 입력된 문자가 대문자 Q 가 아닌 경우에는, 입력 받은 키 값을 정수로 화면에 출력합니다. (기본적으로 아스키 코드 값) 단, 화살표 키 또는 기능 키 (CTRL, SHIFT, ALT) 를 포함한 문자를 읽을 때, 이 함수는 두 번 호출되어야 합니다. 예를 들어, 화살표 위 방향 키를 입력받으면, 첫 번째 _getch 함수의 반환 값으로 0xE0 (224) 가 반환되고 그 다음 _getch 함수의 반환 값으로 72 가 반환됩니다. 또한, CTRL + F1 을 입력하면, 첫 번째 _getch 함수의 반환 값으로 0 이 반환되고, 그 다음의 _getch 함수의 반환 값으로 94 가 반환되게 됩니다. 이 두 가지 경우를 제외하면, 모두 한 번만 _getch 함수의 반환 값을 읽으면 됩니다.
[실행 결과 - 대문자 A 를 입력한 경우]
[실행 결과 - 스페이스 바를 입력한 경우]
[실행 결과 - 화살표 위 방향을 입력한 경우]
[실행 결과 - 대문자 Q 를 입력한 경우]
(_getch 함수 설명 참고)
'1.1) 실습' 카테고리의 다른 글
소리 및 음악 재생하기 (1) - WinApi (4) | 2015.05.25 |
---|---|
의사 난수 (랜덤 숫자) 생성하기 (0) | 2015.05.17 |
배열 내용을 다른 배열에 한번에 복사하기 (1) | 2015.05.17 |
변수를 특정 값으로 초기화하기 (or 배열을 특정 값으로 한번에 초기화하기) (0) | 2015.05.17 |
현재 틱 카운트 (TickCount) 를 이용하여 시간 재기 (0) | 2015.05.17 |
비동기적으로 사용자 입력이 있는지 확인하기 (0) | 2015.05.05 |
콘솔 글자 색 변경하기 (4) | 2015.04.10 |
콘솔 창 크기 변경하기 (0) | 2015.04.09 |
콘솔 커서 숨기기 & 두께 조절하기 (0) | 2015.04.09 |
콘솔 커서 좌표 이동하기 (6) | 2015.04.09 |
RECENT COMMENT