Heim >Backend-Entwicklung >C++ >Wie kann verhindert werden, dass Endlosschleifen in C falsche Datentypen eingeben?
Umgang mit falschen Datentypeingaben in C
Um unerwartetes Verhalten und Endlosschleifen zu verhindern, muss sichergestellt werden, dass der Benutzer den richtigen Datentyp bereitstellt. In C kann der Umgang mit falschen Eingaben eine Herausforderung sein.
Problemstellung:
Wenn das Programm eine ganzzahlige Eingabe erwartet und der Benutzer ein Zeichen eingibt, gibt das Programm eine Unendlichkeit ein Schleife. Umgekehrt tritt das gleiche Problem auf, wenn eine Ganzzahl erwartet wird, aber ein Zeichen eingegeben wird.
Lösung:
Die Endlosschleife tritt auf, weil die Funktion std::cin eine fehlerhafte Eingabe hat Flag wird gesetzt, wenn die Eingabe fehlschlägt. Um dieses Problem zu beheben, müssen wir:
Hier ist ein Beispiel-Codeausschnitt:
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"; }
Dieser Code wird in einer Schleife ausgeführt, bis der Benutzer eine gültige Zahl eingibt. Es löscht das Flag für fehlerhafte Eingaben, verwirft die ungültige Eingabe und fordert den Benutzer auf, es erneut zu versuchen.
Alternativer Ansatz:
Anstatt std::cin zu verwenden, können Sie Sie können die Eingabe auch als Zeichenfolge abrufen und mit std::stoi in eine Ganzzahl konvertieren. Mit diesem Ansatz können Sie die Konvertierung überprüfen, bevor Sie die Eingabe einer Ganzzahlvariablen zuweisen.
Das obige ist der detaillierte Inhalt vonWie kann verhindert werden, dass Endlosschleifen in C falsche Datentypen eingeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!