Autor |
Nachricht |
Benngun
Mitglied
Benutzerprofil
Anmeldungsdatum: 06.03.2001
Beiträge: 18
|
Benngun Mitglied
15:00:00 08.03.2002 Titel: |
Pendant zu getch() und kbhit() im unix bereich??? |
Zitieren |
Hi,
ich suche eine entsprechenden Funktion die wie _getch() (windows) einzelne Zeichen von der Tastatur einließt ohne das man mit Enter die eingabe beenden muß. Da es anscheinend keine solche ANSI - Funktion gibt frag ich hier ob es unter Unix sone funktion speziell gibt
Benngun
[edit]Titel erweitert um den FAQ Eintrag schneller auffindbar zu machen (Original: "Pendant zu _getch() im unix bereich???")[/edit] |
Zuletzt bearbeitet von kingruedi am 00:14:51 07.12.2003, insgesamt 1-mal bearbeitet |
|
 |
DrGreenthumb
Mitglied
Benutzerprofil
Anmeldungsdatum: 07.10.2001
Beiträge: 3363
|
DrGreenthumb Mitglied
15:14:00 08.03.2002 Titel: |
|
Zitieren |
C/C++ Code: |
#include <termios.h>
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;
}
|
C/C++ Code: |
#include <termios.h>
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;
}
|
C/C++ Code: |
#include <termios.h>
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;
}
|
[edit by kingruedi]Bug fixed[/edit] |
_________________ main(k){for(k=0;k<125;++k)putchar((k+1)%25? ("[k<qFUF>XB]X=9V=hm9FC"[k/6]-52)&1<<k%6?64:32:10);}
Zuletzt bearbeitet von kingruedi am 16:25:50 15.02.2004, insgesamt 1-mal bearbeitet |
|
 |
Doktor Prokt
Mitglied
Benutzerprofil
Anmeldungsdatum: 13.01.2002
Beiträge: 1393
|
Doktor Prokt Mitglied
15:51:00 08.03.2002 Titel: |
|
Zitieren |
... und weil's so schön ist hier noch kbhit()
C/C++ Code: |
#include <termios.h>
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);
}
|
C/C++ Code: |
#include <termios.h>
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);
}
|
C/C++ Code: |
#include <termios.h>
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);
}
|
|
_________________ Bäume sind des Programmierers Lieblingsobst.
Zuletzt bearbeitet von kingruedi am 16:26:07 15.02.2004, insgesamt 1-mal bearbeitet |
|
 |
kingruedi
Moderator
Benutzerprofil
Anmeldungsdatum: 11.07.2001
Beiträge: 12559
|
kingruedi Moderator
18:28:00 08.03.2002 Titel: |
|
Zitieren |
ansonsten wird man vielleicht auch mit den ncurses oder der uconio glücklich |
_________________ Der Kunde ist König: Boykottiert die Musikindustrie!
Zuletzt bearbeitet von kingruedi am 16:12:26 20.12.2003, insgesamt 1-mal bearbeitet |
|
 |
|
Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können keine Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum nicht antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
|
|