ホームページ > バックエンド開発 > C++ > C でユーザー入力を double として確実に検証する方法

C でユーザー入力を double として確実に検証する方法

Susan Sarandon
リリース: 2024-12-22 20:54:10
オリジナル
366 人が閲覧しました

How to Robustly Validate User Input as a Double in C  ?

C の Double としてのユーザー入力の検証

一般的なプログラミング タスクの 1 つは、ユーザー入力が特定の基準を満たしていることを確認することです。このような基準の 1 つは、入力が有効な浮動小数点数、特に double であることを確認することです。 C でこの検証にアプローチする方法は次のとおりです。

基本的な検証アプローチ

double x;

while (1) {
  cout << ">";
  if (cin >> x) {
    // valid number
    break;
  } else {
    // not a valid number
    cout << "Invalid Input! Please input a numerical value." << endl;
  }
}
ログイン後にコピー

このコードは、標準入力から double を読み取ることによって基本的な検証を提供します。入力が正常に読み取られた場合は、プログラムを続行します。それ以外の場合は、エラー メッセージが表示されます。

無限入力ループの修正

ただし、上記のコードでは、有効な入力に対してもプログラムがエラー メッセージを出力し続ける可能性があります。これは、cin >> が原因です。 x 行は無効な入力で失敗し、入力ストリームにエラー フラグが設定されたままになります。この問題を解決するには、無効な入力が検出された後にエラー状態をクリアする必要があります。

while (1) {
  if (cin >> x) {
    // valid number
    break;
  } else {
    // not a valid number
    cout << "Invalid Input! Please input a numerical value." << endl;
    cin.clear();
    while (cin.get() != '\n') ; // empty loop to discard invalid input
  }
}
ログイン後にコピー

cin.clear() 行でエラー フラグがクリアされ、後続の空のループで残りの無効な文字が消費されます。入力ラインで。これにより、次回の入力試行が白紙の状態から開始されることが保証されます。

これらの手順に従うことで、ユーザー入力を C の double として効果的に検証でき、堅牢でユーザーフレンドリーな入力検証メカニズムが提供されます。

以上がC でユーザー入力を double として確実に検証する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート