【问题标题】:How to check if an element of an array is a special character?如何检查数组的元素是否为特殊字符?
【发布时间】:2020-11-27 18:39:38
【问题描述】:

我听说过 isdigit() 和 isalpha(),但我只是想知道 C 语言中是否有某种函数可以用来确定某物是否是特殊字符(#、%、*、 $等)。

另外,如果有人知道一个函数,它可以确定某个东西是否不仅是一个字母,而且是一个大写字母还是小写字母,并且也可以分享它——那就太好了。

提前谢谢你。

【问题讨论】:

  • 大写 -> isupper() 小写 -> islower()
  • 查看linux.die.net/man/3/isprint 列出的这些内容,看看您需要什么。
  • 有一个 familycharacter classification 函数。
  • 您可以使用strchr("#%*$", character) 进行自己的测试。
  • 您可以使用ispunct() from <ctype.h> 来查找打印字符是图形字符而不是字母或数字。空格不是图形字符,即使它是打印字符。注意isgraph()isprint()iscntrl()是其他字符分类函数,还有isalpha()islower()isupper()isdigit()isalnum()isblank()、@987654等

标签: c


【解决方案1】:
#include<stdio.h> 
  
void charCheck(char input_char) 
{ 
    if(!(input_char >='a' && input_char<='z')  && !(input_char >='A' && input_char<='Z') && !(input_char >='0' && input_char<='9'))
    {
        printf("Special character\n");   
    }

    else
    {
        printf("Not a special character\n");
    }
    
} 
  
// Driver Code 
int main() 
{ 

    char input_char[] = "abng@#$^^&"; 
    for(int i=0; i<10; i++)
    {
       charCheck(input_char[i]);
    }
    
    return 0; 
}

特殊字符既不是字母也不是数字。输出是:

Not a special character
Not a special character
Not a special character
Not a special character
Special character
Special character
Special character
Special character
Special character
Special character

是大写还是小写

答案:islower()isupper()

【讨论】:

  • 为什么不直接使用isalnum()
  • 从未听说过。谢谢。所以我们可以使用!isalnum()
  • 它不像!isalnum()那么简单——有不是标点符号的控制字符(iscntrl()),还有isspace()isblank()。识别标点符号的最佳功能是ispunct()(惊喜,惊喜),除非您不想将某些字符计为标点符号(例如,您想将撇号视为单词的有效部分,例如“don't”)。
  • @JonathanLeffler 是的,但!isalnum() 相当于这个答案中的条件:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-09
  • 2015-11-04
  • 2021-10-03
  • 1970-01-01
  • 2019-10-22
  • 2011-08-08
  • 2016-05-17
相关资源
最近更新 更多