2011-09-18 1 views
3

사용자가 키를 누를 때까지 기다리는 콘솔 기능을 찾고 있습니다. 파스칼의 읽기 열쇠처럼 되길 바란다. 콘솔 전용 솔루션과 같습니다. GUI 라이브러리 없음/그래픽 라이브러리/윈도우 라이브러리/WinApi 호출 (Windows). 크로스 플랫폼이어야하며 C 표준 라이브러리 또는 C++ 클래스 라이브러리의 일부 (바람직하게는)이어야합니다. 거기에 그런 함수/클래스 메소드 등이 있습니까?파스칼의 readkey에 대한 equivelant가 있습니까? C 또는 C++에서?

+0

http://www.cprogramming.com /fod/kbhit.html – kenny

+0

다국어 소스 파일을 작성하는 것은 어렵습니다. 각 소스 파일을 하나의 별개의 언어로만 유지하는 것이 좋습니다 – pmg

+0

@pmg 그게 그의 의도가 아니라고 생각합니다. –

답변

4

C 표준 라이브러리에는 "키보드 버퍼"라는 개념이 없습니다. 입력/출력은 대부분 라인 기반입니다 (ENTER를 누를 때 트리거 됨).

  • ncurses
  • 변화 setvbuf()와 터미널 버퍼링 방식과 같은 외부 라이브러리를 사용하고 (당신이 버퍼링 방식을 변경하지 않았다면 입력 대기) fgetc()를 사용

    당신은 몇 가지 옵션이
0

으로 간주됩니다. _getch?

2

내가 아는 한 귀하의 품목에는 휴대용 솔루션이 없습니다. Windows에서는 getch()이라는 기능이있는 <conio.h> 헤더를 사용하여 콘솔에서 직접 char을 가져올 수 있습니다. 리눅스에 있다면, ncurses 라이브러리를 사용할 수 있습니다.

+0

그래서'getch()'는 다른 플랫폼에서 이식 할 수 없다는 말을 듣고 있습니다. 그렇다면 리눅스/유닉스에서 C 프로그램을 실행하고있을 때'getch()'함수가 어떻게 동작할까요? 나는''헤더 파일이 다른 플랫폼에서도 사용할 수있는 C 표준 라이브러리의 일부이거나 잘못된 가정이라고 생각한다. – RBT

1

Windws 런타임 환경에있는 경우 비표준 C 함수 kbhit()를 사용할 수 있습니다. 그리고 Windows 용 C 언어 Linux가 있습니다. kbhit(). 이 함수는 원하는 것을 수행합니다. 문자를 읽지 않고 키보드 문자가 입력되었는지를 알려줍니다. 또는 입력 된 문자가있는 경우 한 문자를 읽고 전달합니다. 당신은 여기를 통해 찾을 수 있습니다

http://pwilson.net/sample.html

아래로 스크롤

HTH "리눅스와 유닉스에 대한 단일 문자 키보드 입력"향했다 단락에

관련 문제