_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
1
while (key!=1) {
2
  int key = _getch();
3
  key = key - 48;
4
  cout << key;
5
}
6
cout << endl << "Key 1 detected" << endl;
Gast
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
Du hast (vermutlich) zwei unterschiedliche/unabängige Variablen mit dem 
selben Namen "key", ansonsten würde dein Beispiel gar nicht kompilieren.
1
int key = 0;
2
while (key!=1) {
3
  key = _getch();
4
  key = key - 48;
5
  cout << key;
6
}
7
cout << endl << "Key 1 detected" << endl;
Gast
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.
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
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
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 schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.