Gast
#5967224
ich steh grad auf dem Schlauch. sieht jemand warum folgender Code nicht funktioniert? Es wird beim Drücken von "1" zwar 1 ausgegeben, aber die Schleife wird nicht verlassen
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
|
Anzeige
|
_getch() Problem cpp
Gast
#5967224
ich steh grad auf dem Schlauch. sieht jemand warum folgender Code nicht funktioniert? Es wird beim Drücken von "1" zwar 1 ausgegeben, aber die Schleife wird nicht verlassen
Gast
#5967238
Weil die variable key innerhalb der while Schleife deklariert wird. Wahrscheinlich ist das nicht der ganze Code und die variable wird außerhalb auch deklariert. Diese variable wird für die Überprüfung bei while(...) Genutzt.
Gast
#5967241
Du hast (vermutlich) zwei unterschiedliche/unabängige Variablen mit dem selben Namen "key", ansonsten würde dein Beispiel gar nicht kompilieren.
Gast
#5967260
Zombie schrieb: > int key = 0; > while (key!=1) { > key = _getch(); > key = key - 48; > cout << key; > } > cout << endl << "Key 1 detected" << endl; ich hatte es anfangs genau so, hier werden aber merkwürdigerweise Buchstaben als Buchstaben wiedergegeben anstatt deren ASCII Wert... Wie auch immer, auch so funktionierte die Erkennung der 1 nicht. Was gibt denn das Programm im letzten Post genau aus?
Gast
#5967286
M.K. B. schrieb: > Was gibt denn das Programm im letzten Post genau aus? Eingabe: qwert12345qwert Ausgabe (Leerzeichen zur besseren Übersicht): 65 71 53 66 68 1 2 3 4 5 q w e r t
Gast
#5967287
warum nicht einfach:
Gast
#5967295
zitter_ned_aso schrieb: > warum nicht einfach:cin>>key; weil ich einen einzelnen keystroke registrieren möchte und keine Eingabe die mit Enter terminiert werden muss. cout gibt Zahlen als lesbare Zahlen aus. Nur bei char Datentyp (je nach System ist auch ein int8 ein char) werden diese als Buchstaben interpretiert. Bei mir sieht die Ausgabe am Anfang auch so aus, aber die 1 wird richtig erkannt. Welchen Compiler verwendest du denn. Bei mir ist _getch nicht verfügbar.
Gast
#5967311
M.K. B. schrieb: > Welchen Compiler verwendest du denn. Bei mir ist _getch nicht verfügbar. Viusal Studio 2019 #include <conio.h>
Gast
#5967331
M.K. B. schrieb: > Bei mir ist _getch nicht verfügbar. Das ist teil von Microsofts Inkompatibilitätsprogramm. Das C standard equivalent ist getchar() und fgetc(stdin). Aber in C++ nimmt man ja normalerweise sowieso std::cin.
Gast
#5967337
Herbert P. schrieb: > Eingabe: > qwert12345qwert > > Ausgabe (Leerzeichen zur besseren Übersicht): > 65 71 53 66 68 1 2 3 4 5 q w e r t Sorry, aber das kann doch nicht sein. Die ersten zehn Eingaben werden richtig verarbeitet, und die nächsten fünf nicht mehr?! Zeig mal den ganzen Code.
Gast
#5967340
So nebenbei 1 != '1'. DPA schrieb: > So nebenbei 1 != '1'. Ja, aber nachdem ja erst 48 abgezogen werden, passt es.
Gast
#5967348
DPA schrieb: > So nebenbei 1 != '1'. deswegen schreibt er ja auch
wobei ich eher
schreiben würde.
Gast
#5967350
und davor noch
Aber das wird immer mehr C statt C++.
Gast
#5967390
Zombie schrieb: > Zeig mal den ganzen Code. Danke für den Tipp! Ich wollte den Code nun abgrenzen (der gesamte COde ist zeimlich lang). Dabei bin ich auf folgendes gestoßen: Unmittelbar nach der while Schleife hatte ich: cin >> n; mit dem ich zuvor mal getstet hatte. Steht das dort, wird die SChleife nicht verlassen. Sehe zwar den Grund dafür nicht, aber zumindest konnte ich die Fehlerquelle eleminieren. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|