数字の代わりに文字を入力するときの無限ループについて
整数の入力を求めるプログラムを実行すると、よく無限ループが発生します。ユーザーが数字の代わりに文字を入力した場合。この問題は、C での入力処理の仕組みが原因で発生します。
根本原因:
C では、入力の読み取りに cin 関数が使用されます。ただし、数字以外の文字が入力された場合、cin は有効な整数を抽出できません。その結果、cin ストリーム オブジェクト内にフェイルビット フラグが設定され、エラーが示されます。
無限ループの修正:
無限ループを解決するには、以下が必要です。無効な入力シナリオを検出して処理します。この問題を修正するコードの変更部分は次のとおりです。
#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);
説明:
この修正により、プログラムは有効な正の整数が入力された場合にのみループするようになり、無効な入力による無限ループが防止されます。
以上がC 数値入力プログラムで文字が無限ループを引き起こすのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。