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

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

Dec 13, 2024 am 10:30 AM

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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C言語関数によって返される値の種類は何ですか?返品値を決定するものは何ですか? C言語関数によって返される値の種類は何ですか?返品値を決定するものは何ですか? Mar 03, 2025 pm 05:52 PM

C言語関数によって返される値の種類は何ですか?返品値を決定するものは何ですか?

GULC:Cライブラリはゼロから構築されています GULC:Cライブラリはゼロから構築されています Mar 03, 2025 pm 05:46 PM

GULC:Cライブラリはゼロから構築されています

c言語関数形式文字ケース変換手順 c言語関数形式文字ケース変換手順 Mar 03, 2025 pm 05:53 PM

c言語関数形式文字ケース変換手順

C言語関数の定義と呼び出しルールは何ですか、そして C言語関数の定義と呼び出しルールは何ですか、そして Mar 03, 2025 pm 05:53 PM

C言語関数の定義と呼び出しルールは何ですか、そして

メモリに保存されているC言語関数の返品値はどこにありますか? メモリに保存されているC言語関数の返品値はどこにありますか? Mar 03, 2025 pm 05:51 PM

メモリに保存されているC言語関数の返品値はどこにありますか?

明確な使用法とフレーズ共有 明確な使用法とフレーズ共有 Mar 03, 2025 pm 05:51 PM

明確な使用法とフレーズ共有

STL(ソート、検索、変換など)のアルゴリズムを効率的に使用するにはどうすればよいですか? STL(ソート、検索、変換など)のアルゴリズムを効率的に使用するにはどうすればよいですか? Mar 12, 2025 pm 04:52 PM

STL(ソート、検索、変換など)のアルゴリズムを効率的に使用するにはどうすればよいですか?

C標準テンプレートライブラリ(STL)はどのように機能しますか? C標準テンプレートライブラリ(STL)はどのように機能しますか? Mar 12, 2025 pm 04:50 PM

C標準テンプレートライブラリ(STL)はどのように機能しますか?

See all articles