C++ - kbhit() und getch() für Linux

| | Kommentare (2) | TrackBacks (0)

Wer unter Windows die beiden Funktion kbhit() und getch() kennt, möchte wohl kaum unter Linux auf diese verzichten. Deswegen kann man die beiden Funktionen sich einfach selbst basteln:

kbhit():

#include <termios.h>

int kbhit(void);

int kbhit(void) {

   struct termios term, oterm;

   int fd = 0;

   int c = 0;

   tcgetattr(fd, &oterm);

   memcpy(&term, &oterm, sizeof(term));

   term.c_lflag = term.c_lflag & (!ICANON);

   term.c_cc[VMIN] = 0;

   term.c_cc[VTIME] = 1;

   tcsetattr(fd, TCSANOW, &term);

   c = getchar();

   tcsetattr(fd, TCSANOW, &oterm);

   if (c != -1)

   ungetc(c, stdin);

   return ((c != -1) ? 1 : 0);

}

und getch():

#include <termios.h>

int getch();

int getch()

{

   static int ch = -1, fd = 0;

   struct termios neu, alt;

   fd = fileno(stdin);

   tcgetattr(fd, &alt);

   neu = alt;

   neu.c_lflag &= ~(ICANON|ECHO);

   tcsetattr(fd, TCSANOW, &neu);

   ch = getchar();

   tcsetattr(fd, TCSANOW, &alt);

   return ch;

}

 

Kategorien

0 TrackBacks

Folgende Einträge anderer Blogs beziehen sich auf den Eintrag C++ - kbhit() und getch() für Linux

TrackBack-URL dieses Eintrags: http://www.undertec.de/mt-cgi/mt-tb.cgi/161

2 Kommentare

Jan Theofel schrieb:

Und was machen diese Befehle so besonderes? (Nein, ich will jetzt nicht versuchen den C-Code zu verstehen... :-)

eo schrieb:

Die Funktion kbhit wartet auf einen Tastenanschlag (KeyBoard HIT) und liefert als Ergebnis "wahr" oder "falsch".

Und getch wartet auf ein Zeichen (ähnlich wie getchar), nur dass das Zeichen kein Echo auf dem Bildschirm macht und kein Enter als Bestätigung benötigt.

Ein guter Foreneintrag zum Thema mit der gleichen Erklärung findet sich auch hier: http://www.c-plusplus.de/forum/viewtopic-var-t-is-39320.html

Jetzt kommentieren

Über diese Seite

Diese Seite enthält einen einen einzelnen Eintrag von eo vom 8.05.09 21:15.

Zensur in Deutschland ist der vorherige Eintrag in diesem Blog.

LaTeX: Extra alignment tab has been changed to \cr ist der nächste Eintrag in diesem Blog.

Aktuelle Einträge finden Sie auf der Startseite, alle Einträge in den Archiven.

Dezember 2011

So Mo Di Mi Do Fr Sa
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Etter EDV- und IT-Dienstleistungen
Powered by Movable Type 5.04

Google Werbung: