【发布时间】:2012-01-26 13:31:04
【问题描述】:
如何确定 C 中的 char,例如 a 或 9 是数字还是字母?
是不是更好用:
int a = Asc(theChar);
还是这个?
int a = (int)theChar
【问题讨论】:
标签: c char alphanumeric
如何确定 C 中的 char,例如 a 或 9 是数字还是字母?
是不是更好用:
int a = Asc(theChar);
还是这个?
int a = (int)theChar
【问题讨论】:
标签: c char alphanumeric
您通常可以使用简单的条件检查 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 values,因此您也可以使用 ASCII 值来检查。
【讨论】:
c >= '0' && c <= '9' 上的 C99 标准
c >= '0' && c <= '9'(提到in another answer)之所以有效,是因为C99 N1256 standard draft 5.2.1“字符集”说:
在源和执行基本字符集中, 上述十进制数字列表中0后的每个字符的值应比前一个字符的值大一。
但不保证 ASCII。
【讨论】:
字符只是整数,因此您实际上可以将字符与文字进行直接比较:
if( c >= '0' && c <= '9' ){
这适用于所有字符。 See your ascii table.
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 table 亲自查看。
【讨论】:
如果(theChar >= '0' && theChar <='9') 是一个数字。你明白了。
【讨论】:
这些都没有任何用处。使用标准库中的isalpha() 或isdigit()。他们在<ctype.h>。
【讨论】:
您需要在<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?");
}
【讨论】: