确定 char 是数字还是字母

Posted

技术标签:

【中文标题】确定 char 是数字还是字母【英文标题】:Determine if char is a num or letter 【发布时间】:2012-01-26 13:31:04 【问题描述】:

如何确定 C 中的 char,例如 a9 是数字还是字母?

是不是更好用:

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 &gt;= '0' &amp;&amp; c &lt;= '9' 上的 C99 标准

c &gt;= '0' &amp;&amp; c &lt;= '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】:

&lt;ctype.h&gt; 包含一系列函数,用于确定char 是代表字母还是数字,例如isalphaisdigitisalnum

int a = (int)theChar 不会做你想做的事情的原因是因为a 只会保存代表特定字符的整数值。例如,'9' 的 ASCII 数字是 57,'a' 的 ASCII 数字是 97。

同样适用于 ASCII:

数字 - if (theChar &gt;= '0' &amp;&amp; theChar &lt;= '9') 字母 - if (theChar &gt;= 'A' &amp;&amp; theChar &lt;= 'Z' || theChar &gt;= 'a' &amp;&amp; theChar &lt;= 'z')

查看ASCII table 亲自查看。

【讨论】:

检查 '0' 【参考方案5】:

如果(theChar &gt;= '0' &amp;&amp; theChar &lt;='9') 是一个数字。你明白了。

【讨论】:

【参考方案6】:

这些都没有任何用处。使用标准库中的isalpha()isdigit()。他们在&lt;ctype.h&gt;

【讨论】:

【参考方案7】:

您需要在&lt;ctype.h&gt; 中使用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 是数字还是字母的主要内容,如果未能解决你的问题,请参考以下文章

如何判断一个字符是数字还是字母

一个char阵列 放入一堆数字,输出用啥?%s,还是%d , 还是%c?

如何检查字母是字母还是数字?

字符型怎么判断是否数字和字母?

如何检查字符是字母还是数字?

写一个java方法,判断给定的数字是偶数还是奇数。