Heim >Backend-Entwicklung >C++ >Wie gehe ich mit falschen Datentypeingaben um und vermeide Endlosschleifen in C?

Wie gehe ich mit falschen Datentypeingaben um und vermeide Endlosschleifen in C?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-09 17:46:11184Durchsuche

How to Handle Incorrect Data Type Input and Avoid Infinite Loops in C  ?

Umgang mit falschen Datentypeingaben in C

In C kann eine falsche Datentypeingabe zu Endlosschleifen führen, wenn das Programm Eingaben nicht verarbeiten kann des erwarteten Typs. Wenn beispielsweise eine ganze Zahl angefordert wird, aber ein Zeichen eingegeben wird, kann das Programm in eine endlose Eingabeschleife geraten.

Lösung:

Das zugrunde liegende Problem ist die Einstellung von das „Bad Input Flag“ in std::cin, wenn die Eingabe nicht dem erwarteten Typ entspricht. Um dieses Problem zu beheben:

  1. Löschen Sie das Flag „Bad Input“: Verwenden Sie std::cin.clear(), um das Flag zurückzusetzen und anzuzeigen, dass die Eingabe jetzt akzeptabel ist.
  2. Ungültige Eingabe verwerfen: Verwenden Sie std::cin.ignore(), um falsche Eingaben aus der Eingabe zu entfernen Puffer.

Der folgende Codeausschnitt demonstriert diese Lösung:

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";
}

Diese Codeschleife wird fortgesetzt, bis eine gültige Eingabe bereitgestellt wird.

Alternativ kann man eine Eingabe erhalten als Zeichenfolge und konvertieren Sie sie mithilfe von std::stoi oder ähnlichen Methoden, die eine Konvertierungsvalidierung ermöglichen, in eine Ganzzahl.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit falschen Datentypeingaben um und vermeide Endlosschleifen in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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