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;
}
* 版权,文件变更信息说明
* 文件名: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 }
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 }