ENTER
-
Hi!
Ich schreib zurzeit ein kleines progamm,
indem eine bestimmte funktion aufgerufe werden soll,
wenn ENTER gedrückt wird.
Allerdings kenn ich bis jetzt für sowas nur "cin>>"
und man soll ja nicht immer ne zahl dazu eingeben.
Wer weiß wie man das besser lösen kann?MfG
Canon
-
cin.get();
-
Ne, so meinte ich das nicht.
Ich habe schonmal gesucht, und den folgenden Beitrag von elise gefunden:
int main(){ unsigned char chr; do { chr=getch(); printf("%i",chr); if ((chr==224) || (chr==0)) { chr=getch(); printf("%i",chr); switch(chr) { case 13: printf("go"); break; case 75: printf("<-"); break; case 77: printf("->"); break; case 83: printf("ENTF"); break; case 82: printf("EINF"); break; case 80: printf("pfeil nach unten"); break; case 79: printf("ENDE"); break; case 72: printf("pfeil nach oben"); break; } } }while(true); return 0; }
Allerdings geht das mit enter irgentwie nicht.
Man grückt die taste, und nichts assiert, obwohl eigentlich "go"
ausgegeben werden sollte.
-
Liegt an der komischen if Bedingung
#include <stdlib.h> #include <conio.h> using namespace std; int main() { unsigned char chr; do { chr=getch(); printf("%i\n",chr); switch(chr) { case 13: printf("go\n"); break; case 75: printf("<-\n"); break; case 77: printf("->\n"); break; case 83: printf("ENTF\n"); break; case 82: printf("EINF\n"); break; case 80: printf("pfeil nach unten\n"); break; case 79: printf("ENDE\n"); break; case 72: printf("pfeil nach oben\n"); break; } }while(true); return 0; }
funktioniert.
Grüße
-
danke!
Funzt aber nur wenn man noch#include <stdio.h>
hinzufügt.
-
Wofür hat Elise, denn das if überhaupt eingebaut, hatte das dort nen tieferen Sinn, oder war es einfach nur nen Flüchtigkeitsfehler?
-
weil elise viele compiler hat, und ein blick in die faq wirkt wunder
http://www.c-plusplus.net/forum/viewtopic.php?t=39324&sid=e62b4cec02af2a28a88dea7b14e935bc
ich würde immer beides abprüfen für die compatibilität.
so long.
-
Wie elise schon mit dem Thread angedeutet hat, ist der Code ganz einfach für Sondertasten. Darum auch das "komische" if, dass damit voll und ganz seine Berechtigung hat :).
-
Hallo
Dafür muss man wissen, dass jedes Zeichen, dass man von der Tastatur eingelesen wird und mit getch() wegspeichert, intern wie eine Zahl zwischen 0-255 behandelt wird (Ascii-Code). Wenn man schreibt
#include <conio.h> int main (void) { char cBuchstabe = getch(); }
und man drück eine 0, dann steht in der Variable eigentlich 48 (Ascii-Code für numerische 0).
Sonderzeichen sind hier aber eine Ausnahme .... Wenn man z.b. eine Pfeiltaste drückt, dann werde zwei Zahlen übertragen, also eine quasi zweistelliger Ascii-Code.
Deshalb fragt Elise die Varible nach 224 und 0 ab, weil diese beide Zeichen signalisieren, dass eine Sondertaste gedrück wurde.
Jetzt muss die zweite Stelle (der zweite Ascii-Code-Teil) mit einer weiteren getch() Anweißung eingelesen und ausgewertet werden.
Was sie aber übersehen/nicht bedacht/vergessen hat ist, dass Enter keine Sondertaste ist, sondern den Ascii-Code 13 hat. Das heißt, wenn du bei ihrem Programm Enter drückst, dann ruft das Programm den If-Zweig nicht auf und es passiert nichts.Hoffe das hilft und trägt zum Verständnis bei
Mfg Xatian