2

isdigit()2 つのコマンドとがどのように機能するかについて簡単に説明する必要がありますisalpha()。もちろん、質問する前にオンラインのソースを読みましたが、試してみましたが、うまくいきませんでした。それらを使用する最も簡単な方法は何ですか?

私はそれが値を返すことを知っているので、次のように使用できると仮定しています:

if(isdigit(someinput)==1)
 return -1;

あれは正しいですか?どんなキャラにも使えますか?そして、それを浮動小数点数または配列と比較できますか?

数字と文字を含むテキスト ファイルをスキャンして、何をスキャンしているかを判断したいとします。このコンテキストでこれら 2 つのコマンドを使用できますか?

4

3 に答える 3

2

通常は戻り値を比較する必要はなく、ブール値として扱います。

if (isalpha(someinput))
    do_whatever();

どうしても比較をしたいのであれば、 である必要がありますが!=0、それは完全に冗長で無意味です。

入力から読み取られた文字で使用します。これは(その時点で)浮動小数点数でも何でもなく、単なる文字のグループです。浮動小数点数の場合、それらの一部は数字になりますが、多くは小数点 (数字ではない) を含み、場合によっては , も含まe+ます-

unsigned charまた、通常、関数を呼び出す前に入力をキャストする必要があることに注意してくださいis*。多くの文字セットは、一部の文字を として表示すると負の値として扱いますsigned char。これらの文字のいずれかに負の値を渡すと、未定義の動作が発生します。

于 2010-05-11T20:36:17.257 に答える
1

それらは「コマンド」ではなく、機能です。関数は引数を受け取り、値を返します。

#include <ctype.h>
int isdigit( int ch );

これは関数のシグネチャです。これは、値 (またはのように にキャストできるもの)isdigitを受け入れ、を返すことを示します。したがって、配列を渡すことはできません (ただし、 のすべてのメンバーで呼び出すことはできます)。intintcharintint[]

の署名isalphaは同じです (明らかに名前を除いて)。

ドキュメントには次のように記載されています。

説明: 関数 isalpha() は、引数がアルファベット文字の場合、0 以外を返します。それ以外の場合は、0 が返されます。

これは、すべての実装で比較が正しくないことを意味します。次のようなことをする方が良いです:

if (isdigit(someinput)) {
 return -1;
}

C ではfalse、ブール式で 0 が評価され、ゼロ以外のすべての値が と評価されtrueます。したがって、このチェックはisdigit、-1、5 などの戻り値の実装をカバーします。

これらをテキスト ファイルの値に適用する場合は、一度に 1 文字ずつテキストを読み取り、受け取った文字をそれらのメソッドに渡す必要があります。

于 2010-05-11T20:35:45.010 に答える
0

任意のchar型に使用できます。(実際には int です。これが互換性の理由かどうかはわかりませんが、最も一般的な使用法は文字です)

たとえば、「5」が数字か英数字 (アルファベットの一部) かを判断します。someInputはい、タイプが「char」の場合、使用法は正しいです

于 2010-05-11T20:35:56.397 に答える