web-dev-qa-db-ja.com

charが数字または文字かどうかを判別

char9などのCのaが数字か文字かを判断するにはどうすればよいですか?

使用する方が良いですか?

int a = Asc(theChar);

それともこれ?

int a = (int)theChar
46
Mona

<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?");
}
88
Greg Hewgill

charsは単なる整数であるため、実際に文字とリテラルを直接比較することができます。

if( c >= '0' && c <= '9' ){

これはすべてのキャラクターに適用されます。 asciiテーブルを参照

ctype.h は、これを行うための関数も提供します。

21

<ctype.h>には、charが文字または数字を表すかどうかを判断するための関数の範囲が含まれます(isalphaisdigitisalnumなど)。

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テーブル を見て、自分で確認してください。

13
AusCBloke

これらはどちらも有用なものではありません。標準ライブラリのisalpha()またはisdigit()を使用します。それらは<ctype.h>にあります。

10

(theChar >= '0' && theChar <='9')の場合、数字です。あなたはアイデアを得る。

5
Mike Dunlavey

通常、単純な条件を使用して文字または数字を確認できます

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値を使用して同じことを確認することもできます。

文字が数字または文字であるかどうかを確認する方法

3
Pankaj Prakash

C99標準のc >= '0' && c <= '9'

c >= '0' && c <= '9'(前述の 別の回答 )は、 C99 N1256標準ドラフト 5.2.1 "キャラクターセット"の理由で機能します。

ソースおよび実行の基本文字セットの両方で、上記の10進数のリストの0の後の各文字の値は、前の値よりも1つ大きくなければなりません。

ただし、ASCIIは保証されていません。