002
15.11.2003, 16:56 Uhr
0xdeadbeef
Gott (Operator)
|
getch gibts auch für Linux, das ist Teil der (n)curses-Bibliothek. Das conio.h-Äquivalent wäre allerdings die termio.h, damit kann man das Terminal auch entbuffern:
C++: |
#include <stdio.h> #include <termio.h>
void setTerminalBuffering(int new_state) { static struct termios stored_settings; static int old_state = 1; if(!old_state == !new_state) return; //nix zu tun old_state = new_state; if(!new_state) { struct termios new_settings; tcgetattr(0,&stored_settings); new_settings = stored_settings; new_settings.c_lflag &= (~ICANON); new_settings.c_cc[VTIME] = 0; tcgetattr(0,&stored_settings); new_settings.c_cc[VMIN] = 1; tcsetattr(0,TCSANOW,&new_settings); } else { tcsetattr(0,TCSANOW,&stored_settings); } }
int main() { setTerminalBuffering(0); //ab jetzt geht getchar() wie getch() printf("\n%c\n", getchar()); setTerminalBuffering(1); //jetzt will getchar() wieder ein return haben return 0; }
|
-- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra |