Endlosschleifen bei der Eingabe von Buchstaben anstelle von Zahlen verstehen
Beim Ausführen eines Programms, das zur Eingabe von Ganzzahlen auffordert, stößt man häufig auf eine Endlosschleife wenn ein Benutzer einen Buchstaben anstelle einer Zahl eingibt. Dieses Problem entsteht aufgrund der Funktionsweise der Eingabeverarbeitung in C.
Die Grundursache:
In C wird die Funktion cin zum Lesen von Eingaben verwendet. Wenn jedoch nicht numerische Zeichen eingegeben werden, kann cin keine gültige Ganzzahl extrahieren. Infolgedessen wird das Failbit-Flag im Cin-Stream-Objekt gesetzt, was auf einen Fehler hinweist.
Reparieren der Endlosschleife:
Um die Endlosschleife aufzulösen, benötigen wir um das ungültige Eingabeszenario zu erkennen und zu behandeln. Hier ist ein geänderter Teil des Codes, der dieses Problem behebt:
#include <limits> // Includes numeric_limits for input validation // (...) Existing code // user enters a number cout << "\nPlease enter a positive number and press Enter: \n"; do { while (!(cin >> num1)) { cout << "Incorrect input. Please try again.\n"; // Clear the failbit and ignore the remaining input cin.clear(); cin.ignore(numeric_limits<streamsize>::max(), '\n'); } if (num1 < 0) cout << "The number you entered is negative. Please enter a positive number to continue.\n"; } while (num1 < 0);
Erklärung:
Mit dieser Korrektur führt das Programm jetzt nur dann eine Schleife aus, wenn eine gültige positive Ganzzahl eingegeben wird, wodurch eine Endlosschleife aufgrund ungültiger Eingaben verhindert wird.
Das obige ist der detaillierte Inhalt vonWarum verursachen Buchstaben Endlosschleifen in C-Zahleneingabeprogrammen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!