char
や9
などのCのa
が数字か文字かを判断するにはどうすればよいですか?
使用する方が良いですか?
int a = Asc(theChar);
それともこれ?
int a = (int)theChar
<ctype.h>
のisalpha()
およびisdigit()
標準関数を使用する必要があります。
char c = 'a'; // or whatever
if (isalpha(c)) {
puts("it's a letter");
} else if (isdigit(c)) {
puts("it's a digit");
} else {
puts("something else?");
}
charsは単なる整数であるため、実際に文字とリテラルを直接比較することができます。
if( c >= '0' && c <= '9' ){
これはすべてのキャラクターに適用されます。 asciiテーブルを参照 。
ctype.h は、これを行うための関数も提供します。
<ctype.h>
には、char
が文字または数字を表すかどうかを判断するための関数の範囲が含まれます(isalpha
、isdigit
、isalnum
など)。
int a = (int)theChar
があなたが望むことをしない理由は、a
が単に特定の文字を表す整数値を保持するからです。たとえば、ASCII '9'
の番号は57で、'a'
の場合は97です。
ASCIIの場合:
if (theChar >= '0' && theChar <= '9')
if (theChar >= 'A' && theChar <= 'Z' || theChar >= 'a' && theChar <= 'z')
ASCIIテーブル を見て、自分で確認してください。
これらはどちらも有用なものではありません。標準ライブラリのisalpha()
またはisdigit()
を使用します。それらは<ctype.h>
にあります。
(theChar >= '0' && theChar <='9')
の場合、数字です。あなたはアイデアを得る。
通常、単純な条件を使用して文字または数字を確認できます
if((ch>='a' && ch<='z') || (ch>='A' && ch<='Z))
{
/*This is an alphabet*/
}
数字に使用できます
if(ch>='0' && ch<='9')
{
/*It is a digit*/
}
ただし、Cの文字は内部的に ASCII値 として扱われるため、ASCII値を使用して同じことを確認することもできます。
C99標準のc >= '0' && c <= '9'
c >= '0' && c <= '9'
(前述の 別の回答 )は、 C99 N1256標準ドラフト 5.2.1 "キャラクターセット"の理由で機能します。
ソースおよび実行の基本文字セットの両方で、上記の10進数のリストの0の後の各文字の値は、前の値よりも1つ大きくなければなりません。
ただし、ASCIIは保証されていません。