Heim > Backend-Entwicklung > C++ > Wie verhindert man Endlosschleifen bei der Eingabe nicht-numerischer Werte in C?

Wie verhindert man Endlosschleifen bei der Eingabe nicht-numerischer Werte in C?

Barbara Streisand
Freigeben: 2024-12-13 12:45:10
Original
233 Leute haben es durchsucht

How to Prevent Infinite Loops When Inputting Non-Numeric Values in C  ?

Endlosschleife bei der Eingabe eines Buchstabens anstelle einer Zahl

Wenn eine Zeicheneingabe anstelle einer Ganzzahl auftritt, fällt der bereitgestellte Code in eine Endlosschleife, während die Meldung angezeigt wird: „Die von Ihnen eingegebene Zahl ist negativ. Bitte geben Sie eine positive Zahl ein, um fortzufahren.“ Dies ist auf Folgendes zurückzuführen:

Problem:

Der Cin-Stream wird nicht ordnungsgemäß verarbeitet, wenn er auf eine ungültige Eingabe stößt (in diesem Fall ein Zeichen). Dadurch bleibt der Stream in einem fehlerhaften Zustand, der als „Failbit“-Flag bezeichnet wird.

Lösung:

Um dieses Problem zu beheben, führen Sie die folgenden Schritte aus:

  • Überprüfen Sie die erfolgreiche Eingabe beim Lesen der Zahl (unter Verwendung von cin mit dem Stream-Manipulationsoperator). >>):

    while (!(cin >> num1)) {
        cout << "Incorrect input. Please try again.\n";
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
    }
    Nach dem Login kopieren
  • Löschen Sie den Stream und ignorieren Sie die fehlerhaften Eingabezeichen, wenn cin fehlschlägt (mithilfe von „clear()“ und „ignore()“):

    • cin.clear() löscht das „Failbit“ flag.
    • cin.ignore(numeric_limits::max(), 'n') entfernt alle Zeichen aus dem Stream-Puffer bis einschließlich des nächsten Zeilenumbruchzeichens ('n').

Durch die Implementierung dieser Schritte erkennt das Programm die ungültige Eingabe, löscht den Stream und fordert den Benutzer auf, eine positive Ganzzahl einzugeben, wodurch das Programm zugelassen wird um ohne Endlosschleife fortzufahren.

Das obige ist der detaillierte Inhalt vonWie verhindert man Endlosschleifen bei der Eingabe nicht-numerischer Werte in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage