F1-Tastendruck abwarten
-
Eigentlich ging es mir um reines Ansi-C. Meine Frage wurde zwar beantwortet, aber ich verstehe nicht, warum sie in zu DOS-speziefischen Probleme verschoben wurde. Na ja ...
-
weil das, was du vorhast, nicht in ansi c geht.
kannst entweder winapi nutzen, oder im konsolenfaq den tastencode mit getch herholen (nun ist getch aber nicht standard)
=> verschoben
-
Bitfresser_ST schrieb:
Eigentlich ging es mir um reines Ansi-C. Meine Frage wurde zwar beantwortet, aber ich verstehe nicht, warum sie in zu DOS-speziefischen Probleme verschoben wurde. Na ja ...
Du hast ja geschrieben, dass du es unter DOS brauchst und wie schon geschrieben wurde, gibt es keine ANSI-C Lösung für dein Problem.
system("cls") ist übrigens auch nicht ANSI-C. Zumindest nicht das CLS! Um den Bildschirm zu löschen solltest du auch systemabhängige Funktionen benutzen, z. B. clrscr() aus der conio.h (wie auch getch() aus der conio.h stammt).
-
Nun, ich hab mir mal Gedanken gemacht:
Der Tastendruck hoeherer Tasten laesst sich mit Ansi-C abfragen, und zwar mit getch(). Wenn man eine dieser Tasten drueckt, muss der Tastaturpuffer 2x abgefragt werden. Dafuer hab ich dann auch eine Funktion geschrieben. Sie gibt integer-Werte zurueck, da man bei den hoeheren Tasten nicht mehr mit char-Werten auskommt. Fuer die F1-Taste wird ja 0,59 eingelesen. Ich hab das so geloest, dass ich fuer die 0 den Wert 255 ersetze und den 2. Wert dann aufaddiere. Somit bekommt dann die Taste F1 den Rueckgabewert 314. Die kleineren Tasten kann man sich ja dann wieder zurueckcasten.int getupperkey(void) { char Taste1, Taste2; Taste1=getch(); if((int)Taste1!=0) return (int)Taste1; else Taste2=getch(); return 255+(int)Taste2; }
PS: Dass Bildschirmloeschproblem war gar nicht meine Frage ...
-
Was ist denn unter Linux oder Unix anders an getch()? Wie wuerde man denn dort Tasten abfragen?
-
Bitfresser_ST schrieb:
Der Tastendruck hoeherer Tasten laesst sich mit Ansi-C abfragen, und zwar mit getch().
getch() ist kein ANSI C.
-
Bitfresser_ST schrieb:
Was ist denn unter Linux oder Unix anders an getch()? Wie wuerde man denn dort Tasten abfragen?
hier ein kleines beispiel, und bitte lies mal was nach zu ansi c
http://linux-sxs.org/programming/kbhit.html
-
Hmm, soweit ich das verstanden habe, ist die Funktion auch unter Linux erhaeltlich. Aber lassen wir das. Mein Problem ist geloest. Ich wollte eine systemunabhaengige Loesung haben, die Tasten auszulesen. getch() wird wie es aussieht auf Linux und auf Microsoft-Systemen akzeptiert.
-
Bitfresser_ST schrieb:
Hmm, soweit ich das verstanden habe, ist die Funktion auch unter Linux erhaeltlich. Aber lassen wir das. Mein Problem ist geloest. Ich wollte eine systemunabhaengige Loesung haben, die Tasten auszulesen. getch() wird wie es aussieht auf Linux und auf Microsoft-Systemen akzeptiert.
Willst du oder kannst du es nicht verstehen?!?
getch() ist nicht(!) systemunabhängig. Nur weil es Bibliotheken unter MS und Linux gibt, die dir diese Funktion mit der gleichen Funktionalität zur Verfügung stellen, ist es noch lange nicht systemunabhängig und erst recht nicht ANSI-C!
Es spricht nichts dagegen, dass du getch() benutzt, aber du solltest donnoch wissen, dass es nicht standard und somit auch nicht systemunabhängig ist.
Bitfresser_ST schrieb:
PS: Dass Bildschirmloeschproblem war gar nicht meine Frage ...
Willst du was lernen oder einfach nur ein wenig rumhacken auf der Tastatur? Versuch mal den Befehl CLS unter Linux auszuführen, da wirst du nicht das erwartete Ergebnis bekommen, wenn du nicht bestimmte Packete installiert hast, die MS-Befehle simulieren.
Vielleicht hast du auch noch nicht ganz verstanden was eigentlich ANSI-C ist.
ANSI-C ist im Endeffekt ein Standard, der garantiert, dass bestimmte Funktionen bzw. Includes in jedem System vorhanden sind (wozu die conio.h und getch() nicht gehören!).
-
Danke an den unbekannten Mailzusender und an den Poster der in diesem Thread darauf aufmerksam gemacht hat -> Der Link in der FAQ funktioniert wieder
MfG SideWinder