如何确定C中的char
(例如a
或9
)是数字还是字母?
使用是否更好:
int a = Asc(theChar);
还是这个?
int a = (int)theChar
答案 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
是代表字母还是数字,例如isalpha
,isdigit
和isalnum
。< / 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值来检查相同的内容。
答案 6 :(得分:2)
c >= '0' && c <= '9'
c >= '0' && c <= '9'
(提到in another answer)有效,因为C99 N1256 standard draft 5.2.1“字符集”说:
在源和执行基本字符集中, 上述小数位数列表中0后的每个字符的值应大于前一个值。
但不保证ASCII。