确定char是数字还是字母

时间:2011-12-23 02:56:53

标签: c char alphanumeric

如何确定C中的char(例如a9)是数字还是字母?

使用是否更好:

int a = Asc(theChar);

还是这个?

int a = (int)theChar

7 个答案:

答案 0 :(得分:85)

您需要使用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?");
}

答案 1 :(得分:21)

字符只是整数,因此您实际上可以直接将字符与文字进行比较:

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

这适用于所有角色。 See your ascii table

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

答案 2 :(得分:13)

<ctype.h>包含一系列函数,用于确定char是代表字母还是数字,例如isalphaisdigitisalnum。< / p>

int a = (int)theChar不能做你想要的是因为a只会保存代表特定字符的整数值。例如,'9'的ASCII编号为57,而'a'的ASCII编号为97。

也适用于ASCII:

  • 数字 - if (theChar >= '0' && theChar <= '9')
  • 字母 -
    if (theChar >= 'A' && theChar <= 'Z' || theChar >= 'a' && theChar <= 'z')

看看ASCII table,亲眼看看。

答案 3 :(得分:10)

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

答案 4 :(得分:5)

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

答案 5 :(得分:2)

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

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

对于数字,您可以使用

if(ch>='0' && ch<='9')
{
    /*It is a digit*/
}

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

How to check if a character is number or letter

答案 6 :(得分:2)

c >= '0' && c <= '9'

上的C99标准

c >= '0' && c <= '9'(提到in another answer)有效,因为C99 N1256 standard draft 5.2.1“字符集”说:

  

在源和执行基本字符集中,   上述小数位数列表中0后的每个字符的值应大于前一个值。

但不保证ASCII。