Hallo Listenbewohner! alle mir bekannten Eingabemöglichkeiten (fget, getc, ...) lesen von stdin welche gepuffert ist. D.h. erst nach dem Betätigen der Eingabetaste wird vom Puffer gelesen. Ich möchte aber, das ein auf der Tastatur eingegebenes Zeichen sofort im Programm zur Verfügung steht. Wie stelle ich das am einfachsten an? Gruß Jens.
Am 30.10.2002 um 06:41 schrieb Jens-Uwe Kielmann:
alle mir bekannten Eingabemöglichkeiten (fget, getc, ...) lesen von stdin welche gepuffert ist. D.h. erst nach dem Betätigen der Eingabetaste wird vom Puffer gelesen. Ich möchte aber, das ein auf der Tastatur eingegebenes Zeichen sofort im Programm zur Verfügung steht.
Kann man mit ncurses machen. Schau dir mal die Manualpages zu getch und cbreak an. MfG, Dennis -- Dennis Stosberg 'Quidquid latine dictum eMail: dennis@stosberg.net sit, altum viditur.' gpg key: http://stosberg.net/dennis.asc icq: 63537718
Moin Moin,
From: "Jens-Uwe Kielmann"
alle mir bekannten Eingabemöglichkeiten (fget, getc, ...) lesen von stdin welche gepuffert ist. D.h. erst nach dem Betätigen der Eingabetaste wird vom Puffer gelesen. Ich möchte aber, das ein auf der Tastatur eingegebenes Zeichen sofort im Programm zur Verfügung steht. Wie stelle ich das am einfachsten an?
Ich mache das mit ncurses
On 2002-10-30 06:41:11, Jens-Uwe Kielmann wrote:
alle mir bekannten Eingabemöglichkeiten (fget, getc, ...) lesen von stdin welche gepuffert ist. D.h. erst nach dem Betätigen der Eingabetaste wird vom Puffer gelesen. Ich möchte aber, das ein auf der Tastatur eingegebenes Zeichen sofort im Programm zur Verfügung steht. Wie stelle ich das am einfachsten an?
Geht das nicht mit read() habe gerade meine C-Bücher nicht zur Hand Gruß Volker
Hi, On Wed, 30 Oct 2002, Kroll, Volker wrote:
On 2002-10-30 06:41:11, Jens-Uwe Kielmann wrote:
alle mir bekannten Eingabemöglichkeiten (fget, getc, ...) lesen von stdin welche gepuffert ist. D.h. erst nach dem Betätigen der Eingabetaste wird vom Puffer gelesen. Ich möchte aber, das ein auf der Tastatur eingegebenes Zeichen sofort im Programm zur Verfügung steht. Wie stelle ich das am einfachsten an?
Geht das nicht mit read()
Nein. Terminals sind was anderes als Files. Auch setvbuf() hilft hier
nicht, da Terminals schon vom Treiber her linebuffered sind. Wenn man
also partout nicht (n)curses nehmen will so muss man schon selber ran, und
den Terminalmodus veraendern. Ich hab mal unten ein Beispiel geschrieben.
Die Kommentare sollten genug Erklaerung bieten, wieso wie was gemacht
wird. Dieses Programm funktioniert unter allen Unixen, die termios haben.
Ciao,
Micha.
--
#include
participants (5)
-
Andre Heine
-
Dennis Stosberg
-
Jens-Uwe Kielmann
-
Kroll, Volker
-
Michael Matz