如何确定C中的
char
(例如a
或9
)是数字还是字母?
使用比较好:
int a = Asc(theChar);
还是这个?
int a = (int)theChar
您需要使用
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?");
}
字符只是整数,因此您实际上可以将字符与文字进行直接比较:
if( c >= '0' && c <= '9' ){
这适用于所有角色。 查看您的 ascii 表。
ctype.h 还提供了为您执行此操作的函数。
<ctype.h>
包括一系列用于确定 char
表示字母还是数字的函数,例如 isalpha
、isdigit
和 isalnum
。
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 表。
这些都没有任何用处。使用标准库中的
isalpha()
或 isdigit()
。他们在<ctype.h>
。
如果
(theChar >= '0' && theChar <='9')
是一个数字。你明白了。
您通常可以使用简单的条件检查 ASCII 字母或数字
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“字符集”说:
在源和执行基本字符集中, 上述十进制数字列表中 0 后面的每个字符的值应比前一个字符的值大 1。但是不保证 ASCII。
<=6 and first_two.isalpha() and check_last