Tastendruck abfangen unter Eclipse
-
Hallo,
folgendes Programm soll mittels kbhit() solange warten, bis der user eine Taste gedrückt hat.
#include <stdio.h> #include <conio.h> int main () { printf("Bitte eine Taste druecken: \n"); while(1){ if(kbhit()){ printf("Es wurde ein Zeichen gedrueckt.\n"); break; } } return 0; }
Betriebssystem: Windows XP
IDE: Eclipse for C/C++ 3.4.0
Compiler: MinGWIn VisualStudio 2005 funktioniert es einwandfrei, aber nicht unter Eclipse.
Ich bekomme keine Fehlermeldung, also versuche ich kurz zu beschreiben was passiert.Die erste print-Anweisung wird ausgeführt und ich bekomme den Text auf die Konole geschrieben. Also Tippe ich eine Taste. Und nun passiert das, was eigentlich nicht passieren soll. Ich bleibe in der Schleife hängen und jedes Zeichen, was ich eintippe, wird auf die Konsole geschrieben...
Die Biblipthek conio.h ist enthalten und ebenso die Funktion kbhit(). Ich weiß nicht weiter. Ich hoffe, ihr habt eine Idee?
Ich bin noch C-Neuling.*edit*
Ich habe jetzt versucht, die .exe direkt über die cmd auszuführen... und ich stelle fest, das geht. Also liegt das Problem in der Konsole von Eclipse???
-
so gehts auch
#include <stdio.h> #include <conio.h> int main () { printf("Bitte eine Taste druecken: \n"); getch(); printf("Es wurde ein Zeichen gedrueckt.\n"); return 0; }
-
Ah... ist viel kürzer und erfüllt denselben Zweck... Dankesehr.
Na ja nur in der EclipseKonsole geht es nicht. Wobei mir da noch nicht mal die erste print-Anweisung ausgegeben wird, ohne dass ich den Puffer zuvor leere mitsetbuf(stdout, NULL);
-
probier mal ein
system("PAUSE");
vor dem return 0; oder getchar() statt getch()
-
Hallo,
ich habe leider das gleiche Problem unter Eclispe:
Version: 3.4.1
MinGW-5.1.4.exeEinlesen mit getchar () funktioniert nicht wie gewünscht.
e.g.:cout << "Bitte eingeben: "; c= getchar (); cout << "DEB2";
Ich muss nun zuerst ein Zeichen eingeben und dann kommt erst der Konsolen output mit "Bitte eingeben: "
Wer kann mir da weiterhelfen?
lg
Franz
-
Besser entweder nur die C-IO-Funktionen verwenden, oder nur die IO-Streams von C++. Siehe aber auch: man: fflush.
-
Hi,
Hab da auch mal eine Frage zum Codesnippet mit `getch()`,
wie müsste man das erweitern um auszugeben, welches Zeichen der
Nutzer eingetippt hat?
Hab da noch nicht so den Durchblick, weil ich mich damit
noch nicht so lang beschäftigeMfG Jonas
-
talas schrieb:
Hab da auch mal eine Frage zum Codesnippet mit `getch()`,
wie müsste man das erweitern um auszugeben, welches Zeichen der
Nutzer eingetippt hat?for (;;) { int c = getch(); printf ("%d => %c\n", c, c); }
-
Dank dir schön ~fricky.
Jetzt muss ich es nur noch verstehen
Wenn es dir nicht als zu viel Aufwand
erscheint würde ich dich um eine kleine
Erklärung des Snippets bittenMfG Jonas
-
// endlosschleife, alles zwischen { und } wird immer wiederholt for (;;) { // der rückgabewert von 'getch()' wird in 'c' gespeichert // getch() wartet, bis eine taste gedrueckt wurde int c = getch(); // wir geben 'c' zwei mal aus. einmal als zahl und dann nochmal als zeichen printf ("%d => %c\n", c, c); }
-
Vielen Dank ~fricky
MfG Jonas
-
Danke auch für die Antwort.