getch(), getche(), kbhit() 함수가 데이터를 받아들이는 방식에 대한 질문
팬지
2023.04.01
질문 제목 : getch(), getche(), kbhit() 함수가 데이터를 받아들이는 방식에 대한 질문1. getch(), getche(), kbhit() 함수가 같은 입력 스트림을 사용하나요?
2.스캔코드를 입력받는데 있어서 getch()함수를 쓰던데 getchar()함수로는 스캔코드를 입력받지 못하는 이유는무엇일까요?
3. 콘솔입출력함수(getch(), getche(), kbhit())들은 도대체 어떻게 키보드 입력을 수행할까요?
질문 내용 :
정말 모르겠습니다. 검색도 해보고, 아무리 혼자서 유추해 보려고 해도 답을 찾을 수가 없어 이렇게 질문드립니다.
위 콘솔입력함수들이 getchar()함수나 scanf()함수와 같은 표준입력함수와 스트림을 공유하지는 않는 것 같던데 그럼 키보드와 연결된 스트림이 2개(콘솔입력함수가 쓰는 스트림, 표준입력함수가 쓰는 스트림)인가요?
스캔코드를 읽어오는 것이 표준입력함수로는 불가능 하던데 어째서 그런가요?
검색해보니콘솔입력함수가 버퍼를 사용하지 않는다고 하던데, getch()함수를 통해 2바이트의 스캔코드를 1바이트씩 차례로 읽어오는 코드를 보면 버퍼가 없는데 이런게 가능한지에 의문이 듭니다. 만약 버퍼가 있다면 그 버퍼의 실체는 무엇인가요? 표준입력함수처럼 운영체제가 만들어놓는 버퍼인가요?
정말 모르겠습니다. 속 쉬원한 고수님들의 답변 기다립니다.