确定 char 是数字还是字母
Posted
技术标签:
【中文标题】确定 char 是数字还是字母【英文标题】:Determine if char is a num or letter 【发布时间】:2012-01-26 13:31:04 【问题描述】:如何确定 C 中的 char
,例如 a
或 9
是数字还是字母?
是不是更好用:
int a = Asc(theChar);
还是这个?
int a = (int)theChar
【问题讨论】:
【参考方案1】:您通常可以使用简单的条件检查 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 值来检查。
How to check if a character is number or letter
【讨论】:
正如每个中间 c 文本提到的那样,不能保证 c 使用 ascii,所以这不会在“任何地方”工作【参考方案2】:c >= '0' && c <= '9'
上的 C99 标准
c >= '0' && c <= '9'
(提到in another answer)之所以有效,是因为C99 N1256 standard draft 5.2.1“字符集”说:
在源和执行基本字符集中, 上述十进制数字列表中0后的每个字符的值应比前一个字符的值大一。
但不保证 ASCII。
【讨论】:
【参考方案3】:字符只是整数,因此您实际上可以将字符与文字进行直接比较:
if( c >= '0' && c <= '9' )
这适用于所有字符。 See your ascii table.
ctype.h 还提供了为您执行此操作的函数。
【讨论】:
这个是正确的,但不是因为ASCII是保证的,而是因为数字的连续性:***.com/a/35936519/895245 这就是我一直在寻找的答案。而且我认为大多数人在大学解决任何类型的练习时都需要这个答案【参考方案4】:<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 亲自查看。
【讨论】:
检查 '0' 【参考方案5】:如果(theChar >= '0' && theChar <='9')
是一个数字。你明白了。
【讨论】:
【参考方案6】:这些都没有任何用处。使用标准库中的isalpha()
或isdigit()
。他们在<ctype.h>
。
【讨论】:
【参考方案7】:您需要在<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?");
【讨论】:
以上是关于确定 char 是数字还是字母的主要内容,如果未能解决你的问题,请参考以下文章