본문 바로가기

C/C++

C언어 getch() 방향키 입력받기 (getch(), getchar(), getche())

반응형


 

buffer사용 

입력 받은 값이 사용되는 시점 

Enter key 인식 

화면에반환여부 

header 

getchar() 

 

 "enter" key 입력 후

 n'

 

 stdio.h

 getch()

 ×

 문자 입력 즉시

 'r'

 ×

 conio.h

 getche()

 ×

 문자 입력 즉시

  'r'

 

 conio.h

getchar() : buffer가 비어 있으면 enter를 치기 전까지 buffer에 쌓아 두었다가,

                  enter를 치면 buffer의 값을 하나 꺼냄.

putchar() : getchar()가 꺼낸 문자를 출력

 

getch() : 키보드로부터 단일 문자 즉시 입력(화면 출력 안함)

getche()) : 키보드로부터 단일 문자 즉시 입력(화면 출력 함)

 

getchar, getch, getche 세 함수의 차이점과 특징은 위의 표와 같다.


본론으로 돌아가서 getch()함수를 이용하여 방향키를 입력받을때는


char c;


c = getch();


위와 같은 코드로 왼쪽 방향키를 받으면 75라는 값이 나오는데 이 값은 아스키코드 값이지만 아스키코드표에는 나오지 않는다. 그 이유는 일반 아스키 코드는 1byte인 반면 확장키(방향키, 펑션키)는 2byte이기 때문이다.


getch()함수는 1byte만 받을 수 있기 때문에 방향키를 입력받을때는 한번 더 호출해 주어야 한다.


char ch;

while(1)

{

ch = getch();

if(ch == 0xE0 || ch ==0)    //입력받은 값이 확장키 이면

ch = getch();            //한번더 입력을 받는다.

switch(ch)

case :

...

...

}


위와 같은 방법으로 입력을 받으면 방향키를 입력 받을 수 있다.

반응형

'C/C++' 카테고리의 다른 글

C++ int to string 함수 to_string() error C2668 에러  (2) 2014.06.12
list iterator not incrementable 에러  (3) 2014.05.23