Werte von Tasten ausgeben
-
Moin!
Ich möchte ein Programm schreiben, in dem ich einfach eine Taste drücke und das mir dann in dezimal den Wert dieser Taste ausgiebt.
So wie z.B. A lauf ASCII den Wert 65 hat. Wenn ich aber jetzt Pfeiltasten oder so drücke, gibt mir dieses Prog was ich geschrieben hab immer 10 aus aber für alle Pfeiltasten.hier das Prog von mir:
int main(void) { char c; printf("\nTaste druecken\n"); c=getchar(); printf("die eingegebene Taste besitzt den wert %d", c); return 0; }
Hoffe das ihr mir helfen könnt.
MfG Jan
-
mit Standardmittel nicht zu erreichen, aber (fast) jeder Win32-Compiler bietet eine conio.h mit einer getch()-Funktion.
also: <conio.h> einbinden und getchar() durch getch() ersetzen.
PS: man liest ein int und kein char ein
-
Danke für den Tip, hab das auch gleich gemacht.
Jetzt sieht mein prog so aus:#include <stdio.h> #include <conio.h> int main(void) { int c; printf("\nTaste druecken\n"); c=getch(); printf("die eingegebene Taste besitzt den wert %d", c); return 0; }
Das problem ist das alle Pfeiltasten jetzt den Wert 224 besitzen.
Ich versteh das nicht.MfG Jan
-
Die Funktion getch() gibt bei Sondertasten, wie Pfeil - oder F-Tasten, 2 Integer Werte zurück.
Um den Code für Pfeiltasten ausgeben zu lassen, mußt du deinen Code etwas erweitern.#include <stdio.h> #include <conio.h> int main(void) { int c[2]; printf("\nTaste druecken\n"); c[0]=getch(); c[1]=getch(); printf("die eingegebene Taste besitzt den wert %d und %d", c[0], c[1]); return 0; }
Dieser Code funktioniert nur bei Sondertasten, da getch() wie bereits erwähnt zwei Integer zurückgibt. Den ersten beim ersten Aufruf und den zweiten beim zweiten Aufruf.
Wird eine normale Taste (z.B. Buchstabe) gedrückt, würde die getch() Funktion beim zweiten Aufruf wieder auf einen Tastendruck warten.Um solch eine Sondertaste abzufragen, könnte man z.B. folgenden Code schreiben:
#include <conio.h> int main(void) { int key; bool loop = true; while (loop) { if (kbhit()) { if( (key = getch()) == 224 && (key = getch()) == 72 ) { loop = false; printf("Pfeiltaste nach oben gedrueckt"); } } } return 0; }