* 공통 기능
- 키보드로부터 문자 하나를 입력 받아 리턴한다.
- 키보드에서 문자가 눌러질 때까지 무한대로 대기한다.
- 키보드 입력시까지 대기시키는 목적으로 많이 사용된다.
* getch()
- 에코 기능이 없다.
- 입력받은 문자를 리턴한다.
- 확장키 코드가 입력되었을 때는 0을 리턴한다. 이 경우 getch를 한번 더 호출하면 확장키 코드를 얻을 수 있다.
* getchar()
- getch() 함수와 비슷하다. 유닉스에서 사용가능
* getche()
- getch() 함수와 같되 에코 기능이 있다.
### int fflush(FILE * stream);
- 스트림에 할당되어 있는 버퍼를 비운다.
- 버퍼를 비운다는 의미는 입력, 출력에 따라 의미가 다르다.
- 출력시 : 출력 대기중에 임시적으로 버퍼에 있던 데이터들이 파일에 기록된다.
- 입력시 : 버퍼에 있던 데이터를 모두 지운다. 그리고 다시 새로운 데이터를 입력 받게 된다.
- 버퍼를 비운다는 말은 버퍼에 들어있는 데이터를 없앤다는 의미이다.
- fflush 실행 후에도 스트림은 여전히 개방된 상태로 남는다.
- 성공시 0을 리턴, 에러 발생시 EOF 리턴
### linux에는 getch() 함수가 없기 때문에 함수를 만들어 사용해야 한다.
#include <termios.h>
#include <unistd.h>
int mygetch(void)
{
struct termios oldt, newt;
int ch;
tcgetattr( STDIN_FILENO, &oldt );
newt = oldt;
newt.c_lflag &= ~( ICANON | ECHO );
tcsetattr( STDIN_FILENO, TCSANOW, &newt );
ch = getchar();
tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
return ch;
}
#include <unistd.h>
int mygetch(void)
{
struct termios oldt, newt;
int ch;
tcgetattr( STDIN_FILENO, &oldt );
newt = oldt;
newt.c_lflag &= ~( ICANON | ECHO );
tcsetattr( STDIN_FILENO, TCSANOW, &newt );
ch = getchar();
tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
return ch;
}
출처 : winapi, linuxforums
댓글 없음:
댓글 쓰기