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

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

是不是更好用:

int a = Asc(theChar);

还是这个?

int a = (int)theChar

【问题讨论】:

    标签: c char alphanumeric


    【解决方案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是保证的,而是因为数字的连续性:stackoverflow.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?");
          }
          

          【讨论】:

            猜你喜欢
            • 2011-07-14
            • 2014-10-21
            • 1970-01-01
            • 2011-09-01
            • 2015-03-31
            • 2012-12-23
            • 2019-11-09
            • 2012-03-16
            • 2021-09-24
            相关资源
            最近更新 更多