ホームページ >バックエンド開発 >C++ >C で不正なデータ型入力を処理し、無限ループを回避する方法

C で不正なデータ型入力を処理し、無限ループを回避する方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-09 17:46:11184ブラウズ

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

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

C では、プログラムが入力の処理に失敗したときに、間違ったデータ型入力により無限ループが発生する可能性があります期待通りのタイプ。たとえば、整数が要求されているのに文字が入力された場合、プログラムは無限の入力ループに入る可能性があります。

解決策:

根本的な問題は、次の設定です。入力が予期された型に準拠していない場合の std::cin の「不正な入力フラグ」。これに対処するには:

  1. 不正な入力フラグをクリアします: std::cin.clear() を使用してフラグをリセットし、入力が受け入れ可能になったことを示します。
  2. 不正な入力を破棄: std::cin.ignore() を使用して、不正な入力を入力バッファ。

次のコード スニペットは、この解決策を示しています。

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::stoi または変換検証を可能にする同様のメソッドを使用して整数に変換します。

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

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