Unter C ein Zeichen aus der Tastatur auslesen.

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
benkenobi68
Beiträge: 32
Registriert: 31.10.2005 10:45:06
Wohnort: Region Hannover
Kontaktdaten:

Unter C ein Zeichen aus der Tastatur auslesen.

Beitrag von benkenobi68 » 31.10.2005 11:03:33

:roll:

Hallo und Guten Morgen,

mein Problem ist folgendes:

Ich suche eine Routine unter C, mit der ich ein zeichen aus der tastatur auslesen kann, ohne dass ich dieses mit <Return> bestätigen muss.

Beispiel:

Ein textgesteuertes Menu, bei dem eine Auswahl mittels Buchstaben oder Zahl erfolgt. Das Programm soll nach drücken der Tatste weiterlaufen.

Es gibt eine conio.h, dort ist eine Funktion mit dieser Funktionalität implementiert. Da conio.h allerdings in erster Linie für DOS/Windoof-Bereiche entwickelt wurde, möchte ich diese nicht nutzen, um "sauber" zu bleiben bei der Programmierung.

Gruß JU

freakies
Beiträge: 4
Registriert: 27.10.2005 21:01:03
Wohnort: Oberösterreich
Kontaktdaten:

Beitrag von freakies » 31.10.2005 11:07:34

Probiers mit getch(), bin mir aber jetzt nicht sicher ob das conio.h ist oder nicht..

Code: Alles auswählen

x=getch();
Dann müsstest den ASCII Code von der Taste, die gedrückt wurde in x haben! Danach vl. noch ein printf, damit der User sieht, was er eingegeben hat!

Edit: getch() ist conio.h sorry :oops:

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 31.10.2005 11:31:36

https://www.debianforum.de/forum/viewto ... 638#105638

Besser ist es aber wohl, gleich (n)curses zu nutzen.

oli_f
Beiträge: 272
Registriert: 24.10.2003 12:27:05

Beitrag von oli_f » 31.10.2005 11:37:52

hmm readline()... ist das c++ ??
error - divided by 0

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 31.10.2005 15:23:52

Sollte normales C sein.

Ciam
Beiträge: 69
Registriert: 05.11.2005 13:44:44

Beitrag von Ciam » 10.11.2005 13:58:42

getch

also damit fährst du glaube ich ganz gut

lg, Ciam
_______________________
Typisch Frau also fragt nicht

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 10.11.2005 14:09:22

Ciam hat geschrieben:getch
Geht nur, wenn das Terminal auf den Raw-Modus umgestellt ist, da sonst die Daten erst nach einem Return übertragen werden. Siehe meinen Link drei Postings weiter oben, da ist es erklärt.

Ciam
Beiträge: 69
Registriert: 05.11.2005 13:44:44

Beitrag von Ciam » 10.11.2005 14:29:57

hmm gut zuwissen

ich bin selber erst ein neuling in sachen c

lg, Ciam
_______________________
Typisch Frau also fragt nicht

Benutzeravatar
benkenobi68
Beiträge: 32
Registriert: 31.10.2005 10:45:06
Wohnort: Region Hannover
Kontaktdaten:

was ist ncurses?

Beitrag von benkenobi68 » 12.11.2005 00:28:54

Was ist ncurses?


ich bin Umsteiger von Pascal auf C.

Unter Pascal gibt es eine Funktion, die "keypressed" heißt. Diese ist solange "false", bis eine Taste gedrückt ist. Mit der Funktion "readkey" konnte man dann das Zeichen ungepuffert auslesen.

Es soll in erster Linie darum gehen, textbasierte Menus recht komfortabel zu gestalten, weil man so die Eingabe nicht immer bestätigen musste.

Zielrichtung:

Code: Alles auswählen


do
 ...
while !keypressed;

auswahl = readkey;

Danke JU

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Re: was ist ncurses?

Beitrag von Joghurt » 12.11.2005 00:49:33

benkenobi68 hat geschrieben:Was ist ncurses?
Eine Library, um Terminals anzusteuern. Eine neuimplementation von curses
Unter Pascal gibt es eine Funktion, die "keypressed" heißt. Diese ist solange "false", bis eine Taste gedrückt ist. Mit der Funktion "readkey" konnte man dann das Zeichen ungepuffert auslesen.
Sowas gibt es unter Unix nicht automatisch, da man sich ja auch per Modem etc. auf einem anderen Rechner anmelden konnte/kann.
Um nich ständig Daten übertragen zu müssen, sendet das Terminal die Daten erst an das Programm, wenn die Enter Taste betätigt wurde.
Um das Abzuschalten muss man, wie schon geschrieben, das Terminal in den Raw-Modus schalten.
Um komfortabel Menüs machen zu können, schau dir mal ncurses an, dort gibt es dann auch zu "gotoxy" etc. äquivalente Befehle. Wenn du nur ein getch haben willst, das sofort auf Tastendrücke reagiert, lies dir den Post durch, auf den ich verwiesen habe.

Antworten