确定char是num还是letter

Mon*_*ona 48 c alphanumeric char

如何确定一个char在C如a或者9是一个数字或字母?

使用起来更好:

int a = Asc(theChar);
Run Code Online (Sandbox Code Playgroud)

或这个?

int a = (int)theChar
Run Code Online (Sandbox Code Playgroud)

Gre*_*ill 92

您将要使用isalpha()isdigit()标准函数<ctype.h>.

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?");
}
Run Code Online (Sandbox Code Playgroud)


Chr*_*lan 21

字符只是整数,所以你实际上可以直接比较你的字符与文字:

if( c >= '0' && c <= '9' ){
Run Code Online (Sandbox Code Playgroud)

这适用于所有角色. 请参阅您的ascii表.

ctype.h还提供了为您执行此操作的功能.

  • 这是正确的,但不是因为 ASCII 得到保证,而是因为数字的连续性:http://stackoverflow.com/a/35936519/895245 (3认同)

Aus*_*oke 14

<ctype.h>包括一系列功能,用于确定a是char代表字母还是数字,例如isalpha,isdigitisalnum.

之所以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表,亲眼看看.

  • '0' &lt;= x &lt;= '9' 的检查对于所有符合标准的实现都是正确的(ASCII 与否无关紧要)。C 要求十进制数字具有连续表示。至于信件,所有的赌注都没有了。 (2认同)

Ern*_*ill 10

这些都没有任何用处.使用isalpha()isdigit()来自标准库.他们在<ctype.h>.


Pan*_*ash 6

您通常可以使用简单的条件检查 ASCII 字母或数字

if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
{
    /*This is an alphabet*/
}
Run Code Online (Sandbox Code Playgroud)

对于数字,您可以使用

if (ch >= '0' && ch <= '9')
{
    /*It is a digit*/
}
Run Code Online (Sandbox Code Playgroud)

但是由于 C 中的字符在内部被视为ASCII 值,因此您也可以使用 ASCII 值来检查相同的值。

如何检查字符是数字还是字母


Mik*_*vey 5

如果(theChar >= '0' && theChar <='9')它是一个数字.你明白了.