Unix/Linux环境C编程入门教程(25) C/C++字符测试那些事儿
- isalnum isalpha isascii iscntrl isdigit isgraph isislower isprint isspace ispunct isupper isxdigit介绍
首先这些全部是宏,只不过我们初学者和使用者可以直接把他当作函数用。
 
  | |
相关函数  | isalpha,isdigit,islower,isupper  | 
表头文件  | #include<ctype.h>  | 
定义函数  | int isalnum (int c)  | 
函数说明  | 检查参数c是否为英文字母或阿拉伯数字,在标准c中相当于使用"isalpha(c) || isdigit(c)"做测试。  | 
返回值  | 若参数c为字母或数字,则返回TRUE,否则返回NULL(0)。  | 
附加说明  | 此为宏定义,非真正函数。  | 
范例  | /* 找出str 字符串中为英文字母或数字的字符*/  | 
执行  | 1 is an apphabetic character  | 
  | |
相关函数  | isalnum,islower,isupper  | 
表头文件  | #include<ctype.h>  | 
定义函数  | int isalpha (int c)  | 
函数说明  | 检查参数c是否为英文字母,在标准c中相当于使用"isupper(c)||islower(c)"做测试。  | 
返回值  | 若参数c为英文字母,则返回TRUE,否则返回NULL(0)。  | 
附加说明  | 此为宏定义,非真正函数。  | 
范例  | /* 找出str 字符串中为英文字母的字符*/  | 
执行  | c is an apphabetic character  | 
  | |
相关函数  | iscntrl  | 
表头文件  | #include <ctype.h>  | 
定义函数  | int isascii(int c);  | 
函数说明  | 检查参数c是否为ASCII码字符,也就是判断c的范围是否在0到127之间。  | 
返回值  | 若参数c为ASCII码字符,则返回TRUE,否则返回NULL(0)。  | 
附加说明  | 此为宏定义,非真正函数。  | 
范例  | /* 判断int i是否具有对映的ASCII码字符*/  | 
执行  | 125 is an ascii character:}  | 
  | |
相关函数  | isascii  | 
表头文件  | #include <ctype.h>  | 
定义函数  | int iscntrl(int c);  | 
函数说明  | 检查参数c是否为ASCII控制码,也就是判断c的范围是否在0到30之间。  | 
返回值  | 若参数c为ASCII控制码,则返回TRUE,否则返回NULL(0)。  | 
附加说明  | 此为宏定义,非真正函数。  | 
  | |
相关函数  | isxdigit  | 
表头文件  | #include<ctype.h>  | 
定义函数  | int isdigit(int c)  | 
函数说明  | 检查参数c是否为阿拉伯数字0到9。  | 
返回值  | 若参数c为阿拉伯数字,则返回TRUE,否则返回NULL(0)。  | 
附加说明  | 此为宏定义,非真正函数。  | 
范例  | /* 找出str字符串中为阿拉伯数字的字符*/  | 
执行  | 1 is an digit character  | 
  | |
相关函数  | isprint  | 
表头文件  | #include <ctype.h>  | 
定义函数  | int isgraph (int c)  | 
函数说明  | 检查参数c是否为可打印字符,若c所对映的ASCII码可打印,且非空格字符则返回TRUE。  | 
返回值  | 若参数c为可打印字符,则返回TRUE,否则返回NULL(0)。  | 
附加说明  | 此为宏定义,非真正函数。  | 
范例  | /* 判断str字符串中哪些为可打印字符*/  | 
执行  | str[0] is printable character:a  | 
  | |
相关函数  | isalpha,isupper  | 
表头文件  | #include<ctype.h>  | 
定义函数  | int islower(int c)  | 
函数说明  | 检查参数c是否为小写英文字母。  | 
返回值  | 若参数c为小写英文字母,则返回TRUE,否则返回NULL(0)。  | 
附加说明  | 此为宏定义,非真正函数。  | 
范例  | #include<ctype.h>  | 
执行  | c is a lower-case character  | 
  | |
相关函数  | isgraph  | 
表头文件  | #include<ctype.h>  | 
定义函数  | int isprint(int c);  | 
函数说明  | 检查参数c是否为可打印字符,若c所对映的ASCII码可打印,其中包含空格字符,则返回TRUE。  | 
返回值  | 若参数c为可打印字符,则返回TRUE,否则返回NULL(0)。  | 
附加说明  | 此为宏定义,非真正函数。  | 
范例  | /* 判断str字符串中哪些为可打印字符包含空格字符*/  | 
执行  | str[0] is printable character:a  | 
  | |
相关函数  | isgraph  | 
表头文件  | #include<ctype.h>  | 
定义函数  | int isspace(int c)  | 
函数说明  | 检查参数c是否为空格字符,也就是判断是否为空格('')、定位字符('\t')、CR('\r')、换行('\n')、垂直定位字符('\v')或翻页('\f')的情况。  | 
返回值  | 若参数c为空格字符,则返回TRUE,否则返回NULL(0)。  | 
附加说明  | 此为宏定义,非真正函数。  | 
范例  | /*将字符串str[]中内含的空格字符找出,并显示空格字符的ASCII码*/  | 
执行  | str[4] is a white-space character:32  | 
  | |
相关函数  | isspace,isdigit,isalpha  | 
表头文件  | #inlude<ctype.h>  | 
定义函数  | int ispunct(int c)  | 
函数说明  | 检查参数c是否为标点符号或特殊符号。返回TRUE也就是代表参数c为非空格、非数字和非英文字母。  | 
返回值  | v若参数c为标点符号或特殊符号,则返回TRUE,否则返回NULL(0)。  | 
附加说明  | 此为宏定义,非真正函数。  | 
范例  | /*列出字符串str中的标点符号或特殊符号*/  | 
执行  | v  | 
  | |
相关函数  | isalpha,islower  | 
表头文件  | #include<ctype.h>  | 
定义函数  | int isupper(int c)  | 
函数说明  | 检查参数c是否为大写英文字母。  | 
返回值  | 若参数c为大写英文字母,则返回TRUE,否则返回NULL(0)。  | 
附加说明  | 此为宏定义,非真正函数。  | 
范例  | /*找出字符串str中为大写英文字母的字符*/  | 
执行  | F is an uppercase character  | 
  | |
相关函数  | isalnum,isdigit  | 
表头文件  | #include<ctype.h>  | 
定义函数  | int isxdigit (int c)  | 
函数说明  | 检查参数c是否为16进制数字,只要c为下列其中一个情况则返回TRUE。16进制数字:0123456789ABCDEF。  | 
返回值  | 若参数c为16进制数字,则返回TRUE,否则返回NULL(0)。  | 
附加说明  | 此为宏定义,非真正函数。  | 
范例  | /*找出字符串str中为十六进制数字的字符*/  | 
执行  | 1 is a hexadecimal digits  | 
  | 
2.小试牛刀:文档统计器的实现实现主要也是利用本文介绍的函数isalnum(),isalpha(),isdigit(),islower(),isupper()由于可能很多同学还没有接触过C语言文件IO的函数,所以我们使用字符串输入模拟从文本中读取。
#include <stdio.h> //gets(),printf()
#include <ctype.h>
/*isalnum(),isalpha(),isdigit(),islower(),isupper()*/
int main()
{
    char buffer[1024];  //变量定义
    int i = 0;          //每一个类型的计数器
    int iNum = 0;
    int iLower = 0;
    int iSupper = 0;
    int iSpace  = 0;
    printf("please input string:");
    gets(buffer);
    while(i <1024 && buffer[i] !='\0') //循环终止条件
    {
        if(isalnum(buffer[i]))
        {
            ++iNum;
        }
        if(isspace(buffer[i]))
        {
            ++iSpace;
        }
        if(islower(buffer[i]))
        {
            ++iLower;
        }
        if(isupper(buffer[i]))
        {
            ++iSupper;
            printf("%c is supperchar \n",buffer[i]);
        }
        ++i;
    }
    printf("char+number %d\nspace %d\nlowerchar %d\nsupperchar %d\n",
           iNum,iSpace,iLower,iSupper);
    return 0;
}
 
3. 各个函数在Unix/Linux平台的效果
在RHEL6上
在RHEL7上
在Solaris上
在MAC上
各个平台效果展示完毕。
对于字符的测试我们上述这些貌似函数的宏一般足以胜任,但是往往还有一些特殊要求的需求你自己做一些修改。
                    
                
                
            
        
浙公网安备 33010602011771号