|
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 |