确定是否字符是一个数字或字母
如何确定C或C中的char
是数字还是字母?
使用更好吗?
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?"); }
字符只是整数,所以你可以直接比较字符和文字:
if( c >= '0' && c <= '9' ){
这适用于所有字符。 看你的ASCII表 。
ctype.h也提供了为你做这个的function。
<ctype.h>
包含一系列用于确定char
代表字母或数字的函数,如isalpha
, isdigit
和isalnum
。
之所以int a = (int)theChar
不会做你想做的事情,因为a
将只保存表示特定字符的整数值。 例如, '9'
的ASCII码是57, 'a'
是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')
这是一个数字。 你明白了。
c >= '0' && c <= '9'
C99标准c >= '0' && c <= '9'
c >= '0' && c <= '9'
( 在另一个答案中提到)因为C99 N1256标准草案 5.2.1“字符集”说:
在源和执行基本字符集中,上述十进制数字列表中的0之后的每个字符的值应该大于前一个的值。
但是不能保证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值来检查相同的值。
如何检查一个字符是数字还是字母