ホームページ > バックエンド開発 > C++ > C での入力検証には char または int を使用する必要がありますか?

C での入力検証には char または int を使用する必要がありますか?

Susan Sarandon
リリース: 2024-10-28 22:30:30
オリジナル
482 人が閲覧しました

 Should I use char or int for input validation in C?

isdigital(c) - 入力検証に char と int を利用する

コードを検査するとき、これはユーザー入力を検証することを目的としています。

このジレンマを理解するには、C の isdigital 関数の複雑さを深く掘り下げる必要があります。その名前に反して、isdigital は整数の引数を期待します。 char 入力との互換性に関する懸念が生じます。

その説明は、C の歴史、特に getchar() の歴史にあります。getchar() は、文字コードとエラー コード (EOF を表す負の値) の両方に対応するために文字を整数として取得します。この設計では、コンパイラに応じて符号付きまたは符号なしの char との互換性の問題が発生します。

符号付き char では、負の値が EOF と重複し、エラーが発生する可能性があるため、問題が発生します。したがって、isdigital および関連関数では、正性を保証するために unsigned char として扱われる入力が必要です。

互換性を確保するには、コードを次のように変更します。

<code class="c">if(isdigit((unsigned char)c))</code>
ログイン後にコピー

さらに、次のことを確認することが重要です。入力ストリームは、閉じられたストリームが初期化されないままになる可能性があるため、 c を使用する前は有効です。

以上がC での入力検証には char または int を使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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