在C语言中,如何确定一个char类型的字符(如a或9)是数字还是字母?
最好使用以下哪种方式:
int a = Asc(theChar);
还是这个呢?
int a = (int)theChar
在C语言中,如何确定一个char类型的字符(如a或9)是数字还是字母?
最好使用以下哪种方式:
int a = Asc(theChar);
还是这个呢?
int a = (int)theChar
您需要使用 <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?");
}
<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“字符集”中指出:
在源代码和执行基本字符集中,上述十进制数字列表中每个字符的值都比前一个大1。
但是,不能保证ASCII。