ホームページ >バックエンド開発 >C++ >C での不正なデータ型入力による無限ループを防ぐ方法

C での不正なデータ型入力による無限ループを防ぐ方法

Barbara Streisand
Barbara Streisandオリジナル
2024-12-13 10:30:13295ブラウズ

How to Prevent Infinite Loops from Incorrect Data Type Input in C  ?

C での間違ったデータ型入力の処理

ユーザーが適切なデータ型を指定していることを確認することは、予期しない動作や無限ループを防ぐために非常に重要です。 C では、間違った入力を処理するのが難しい場合があります。

問題ステートメント:

プログラムが整数入力を予期し、ユーザーが文字を入力すると、プログラムは無限大文字を入力します。ループ。逆に、整数が予期されているのに文字が入力された場合にも同じ問題が発生します。

解決策:

std::cin 関数の不正な入力により無限ループが発生します。入力が失敗するとフラグが設定されます。これを解決するには、

  • 不正な入力フラグをクリアします: std::cin.clear();
  • 無効な入力フラグを破棄します。バッファからの入力: std::cin.ignore(std::numeric_limits::max(), 'n');

コード スニペットの例を次に示します:

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

このコードは、ユーザーが有効な番号を入力するまでループします。不正な入力フラグをクリアし、無効な入力を破棄し、ユーザーに再試行するように求めます。

代替アプローチ:

std::cin を使用する代わりに、入力を文字列として取得し、std::stoi を使用して整数に変換することもできます。このアプローチにより、入力を整数変数に割り当てる前に変換を検証できます。

以上がC での不正なデータ型入力による無限ループを防ぐ方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。