ctype.h中函数测试

下面的代码测试了ctype.h中的主要"函数",这里的函数打引号,说明这里的函数不是真正的函数,只是宏定义而已;另外,掌握该头文件的方法是熟记ascii码表。

/*
 * 版权,文件变更信息说明
 * 文件名:TestCType.cpp
 * 作用:测试ctype.h头文件中的字符测试函数
 * 原作者:zxh
 * 最新修改:zxh
 * 最新修改时间:2010-06-18
 
*/

#include
<stdio.h>
#include
<stdlib.h>

/*
 * 主要测试该头文件中的如下函数:
 * isalnum , isdigit , isalpha , isascii , iscntrl , ispunct
 * isgraphics , isprint , islower , isupper , isxdigit
 * 需要注意的是:这些均为宏定义,非真正函数。
 * int isalnum (int c) 测试字符是否为英文或数字,在标准c中相当于使用“isalpha(c) || isdigit(c)”
 * int isalpha (int c) 检查参数c是否为英文字母 ,在标准c中相当于使用“isupper(c)||islower(c)”
 * int isascii(int c)  检查参数c是否为ASCII码字符,也就是判断c的范围是否在0到127之间。
 * int iscntrl(int c)  检查参数c是否为ASCII控制码,也就是判断c的范围是否在0到30之间。
 * int isdigit(int c)  检查参数c是否为阿拉伯数字0到9。
 * int isgraph (int c) 检查参数c是否为可打印字符,若c所对映的ASCII码可打印,且非空格字符则返回TRUE。
 * int islower(int c)  检查参数c是否为小写英文字母。
 * int isprint(int c)  检查参数c是否为可打印字符,若c所对映的ASCII码可打印,其中包含空格字符,则返回TRUE。
 * int isspace(int c)  检查参数c是否为空格字符,也就是判断是否为空格('')、定位字符('\t')、CR('\r')、换行('\n')、垂直定位字符('\v')或翻页('\f')的情况。
 * int ispunct(int c)  检查参数c是否为标点符号或特殊符号。返回TRUE也就是代表参数c为非空格、非数字和非英文字母。
 * int isupper(int c)  检查参数c是否为大写英文字母。
 * int isxdigit (int c)检查参数c是否为16进制数字,只要c为下列其中一个情况则返回TRUE。16进制数字:0123456789ABCDEF。
 
*/
#include
<ctype.h>

int main(char argc,char *argv[])
{

    
char *str = " 123c@#FDsP[e?";

    
int i = 0;

    
for(i = 0; str[i] != '\0' ; i++)
    {
        
//测试该字符是否为字母数字
        if(isalnum(str[i]))
            printf(
"%c is an alphanumeric character\n",str[i]);

        
//测试该字符是否为字母
        if(isalpha(str[i]))
            printf(
"%c is an alphabetic character\n",str[i]);

        
//测试该字符是否在0-127之间
        if(isascii(str[i]))
            printf(
"%c is an ascii character\n",str[i]);

        
//其余的同理测试
        
//... ...
    }

    
/*
     * 暂停程序以便查看结果,在stdlib.h头文件中
     
*/
    system(
"pause");
    
    
/*
     * 成功返回
     
*/
    
return 0;
}

 

 新的测试文件:

  1 // 作用:测试<cctype>中的相关字符测试函数

 2 // 总结:(1)了解ASCII码表,知道常见字符对应的ASCII码值(2)这些判读函数其实是宏
 3 // 时间:2010-09-01
 4 
 5 #include "stdafx.h"
 6 
 7 int _tmain(int argc, _TCHAR* argv[])
 8 {
 9     int digits=0;     //数字(0~10 48~57)
10     int alphas=0;     //字母(a~z 97~122,A~Z 65~90)  
11     int alnums=0;     //数字 || 字母 
12     int cntrls=0;     //控制字符(0~30)  
13     int asciis=0;     //ascii字符(0~127)
14     int graphics=0;   //可显示字符(不包括空格)
15     int prints=0;     //可打印字符(包括空格)
16     int lowers=0;     //小写字母  
17     int uppers=0;     //大写字母
18     int spaces=0;     //空格(包括空格,翻页,制表符等) 
19     int puncts=0;     //除数字字母和空格外的字符 
20     int xdigits=0;    //十六进制字符 
21 
22     //介于0~127之间的数填充数组
23     int* randomInts = new int[10000];
24 
25     for(int i =0 ; i<10000;i++)
26     {
27         randomInts[i] = rand() % 127;
28     }
29 
30     for(int i=0;i<10000;i++)
31     {
32         if(isdigit(randomInts[i]))
33             digits++;
34         if(isalpha(randomInts[i]))
35             alphas++;
36         if(isalnum(randomInts[i]))
37             alnums++;
38         if(iscntrl(randomInts[i]))
39             cntrls++;
40         if(isascii(randomInts[i]))
41             asciis++;
42         if(isgraph(randomInts[i]))
43             graphics++;
44         if(isdigit(randomInts[i]))
45             digits++;
46         if(isprint(randomInts[i]))
47             prints++;
48         if(islower(randomInts[i]))
49             lowers++;
50         if(isupper(randomInts[i]))
51             uppers++;
52         if(isspace(randomInts[i]))
53             spaces++;
54         if(ispunct(randomInts[i]))
55             puncts++;
56         if(isxdigit(randomInts[i]))
57             xdigits++;
58     }
59 
60     printf("数字:%d",digits);
61     printf("\n字母:%d",alphas);
62     printf("\n数字字母:%d",alnums);
63     printf("\n控制字符:%d",cntrls);
64     printf("\nascii字符:%d",asciis);
65     printf("\n可显示字符:%d",graphics);
66     printf("\n可打印字符:%d",prints);
67     printf("\n小写字母:%d",lowers);
68     printf("\n大写字母:%d",uppers);
69     printf("\n空格:%d",spaces);
70     printf("\n标点:%d",puncts);
71     printf("\n十六进制数:%d",xdigits);
72     system("pause");
73 }

 

posted on 2010-06-24 19:05  虚怀若谷  阅读(828)  评论(0编辑  收藏  举报

导航