Heim > Backend-Entwicklung > C++ > Wie kann ich Endlosschleifen verhindern, die durch falsche Datentypeingaben in C verursacht werden?

Wie kann ich Endlosschleifen verhindern, die durch falsche Datentypeingaben in C verursacht werden?

Patricia Arquette
Freigeben: 2024-12-21 08:53:09
Original
284 Leute haben es durchsucht

How Can I Prevent Infinite Loops Caused by Incorrect Data Type Input in C  ?

Umgang mit falschen Datentypeingaben in C

Bei der Entwicklung von C-Programmen ist es wichtig, einen robusten Umgang mit Benutzereingaben sicherzustellen, insbesondere wenn spezifische Daten erwartet werden Datentypen. Eingaben, die vom erwarteten Typ abweichen, können zu Programmfehlfunktionen wie Endlosschleifen führen.

Stellen wir uns ein Szenario vor, in dem Ihr Programm den Benutzer zur Eingabe einer Ganzzahl auffordert, dieser jedoch versehentlich ein Zeichen eingibt. Wenn das Programm diese ungültige Eingabe nicht verarbeiten kann, tritt es in eine Endlosschleife ein und fragt kontinuierlich nach einer Ganzzahl, obwohl es ein Zeichen empfängt.

Die zugrunde liegende Ursache dieses Problems ist die Einstellung von „bad input“ von std::cin " Flag, wenn eine falsche Eingabe festgestellt wird. Um dieses Problem zu beheben, muss dieses Flag gelöscht und die fehlerhafte Eingabe aus dem Eingabepuffer verworfen werden.

Der folgende Codeausschnitt veranschaulicht, wie dies erreicht wird:

while (std::cout << "Enter a number" && !(std::cin >> num)) {
    std::cin.clear(); // Clear bad input flag
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // Discard input
    std::cout << "Invalid input; please re-enter.\n";
}
Nach dem Login kopieren

In diesem Code wird die while-Schleife wird ausgeführt, solange die Eingabe fehlschlägt (d. h. keine Zeichen gelesen wurden). Innerhalb der Schleife löscht cin.clear() das Flag für fehlerhafte Eingaben und cin.ignore() verwirft die falsche Eingabe aus dem Puffer. Das Programm fordert den Benutzer dann auf, eine gültige Zahl erneut einzugeben.

Alternativ können Sie die Eingabe als Zeichenfolge erhalten und sie mithilfe von std::stoi oder einer anderen Methode, die eine Konvertierungsüberprüfung ermöglicht, in eine Ganzzahl konvertieren. Dieser Ansatz ermöglicht die Überprüfung des Konvertierungsergebnisses und die entsprechende Behandlung ungültiger Eingaben.

Das obige ist der detaillierte Inhalt vonWie kann ich Endlosschleifen verhindern, die durch falsche Datentypeingaben in C verursacht werden?. 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