공룡호가 사는 세상 이야기

프로그램을 작성하다 보면, 문자를 입력한 뒤에 개행문자를 입력하지 않고 자동으로 입력스트림에 있는 문자를 해당 변수로 가져갈 수 있는 방법이 궁금해진다.
getch() 를 사용하면 해결할 수 있는데, getch()는 리턴형이 int형이므로, 정수형을 리턴한다. getch는 문자를 받는 함수이므로 숫자를 입력하여도 문자로 인식한다.
그래서 '1'을 입력하면 정수형 '1'이 아닌 문자로 인식하고 정수로 변환, '49'를 리턴한다.

결국 리턴값이 중요한 것이 아니다.
예를 들어, int a = getch();를 하여 '1'을 입력했다면
a=49가 되는데, 메모리에 있는 값이 변하는 것이 아니다.
모든 것은 맞닿아 있으므로 형변환 등을 통해 입맛대로 간쳐서 드시면 될 터이다.

응용-> getch()를 사용하여 콘솔에서 암호를 입력받는 함수

int getpass(char * buffer, int buf_size)
{
int count = 0;
int c = 0;
while(1)
{
c = getch();
buffer[count] = (char)c;
count++;
if(c==13) //enter
break;
printf("*"); //password
if(count == buf_size-1)
break;
}
buffer[count]='\0';
printf("\n");
}

getch()라는 함수를 이용하면 키보드로 입력하는 것은 화면에 나오지 않는다는 점에 착안.
13이라는 숫자는 엔터키를 의미한다.
암호를 입력하고 나서 엔터를 치거나, 입력한 문자의 개수가 (버퍼크기-1)개일 경우는
입력을 종료한다.

cf) getch() function Declared in 'conio.h' or 'curses.h'

'프로그래밍' 카테고리의 다른 글

아파트 단지 번호 붙이기  (0) 2006.01.07
ACM 로마숫자 문제 변형판  (0) 2006.01.07
초점의 원리  (0) 2006.01.06
Simple Linked List, head와 tail의 연결과 메모리 누수  (0) 2005.12.30
객체지향의 철학  (0) 2004.11.21