006_C标准库函数之<ctype.h>

字符类测试:头文件<ctype.h>中说明了一些用于测试字符的函数。每个函数的变量均为int类型,变量的值必须是EOF或可用unsigned char类型表示的字符,函数的返回值为int类型。如果变量满足所指定的条件,那么函数返回非0值(表示真);否则返回值为0(表示假)。这些函数包括2.1~2.11。

在7位ASCII字符集中,可打印字符是从0x20(' ')到0x7E('~')之间的字符;控制字符是从0(NUL)到0x1F(US)之间的字符和字符0x7F(DEL)。

【函数1:isalnum 】

【格式】

int isalnum(int ch);
【功能】

变量为字母或数字时,函数返回非0值,否则返回0。

【入参】

int ch:字符或者数字

【返回值】

int类型的数据,真(非0) 或 假(0)

【test_code】

输出结果:

【总结】

变量为字母或数字时,函数返回非0值,否则返回0

这句话的理解是:这里指的数字和字母都是指ASCII中的字符'0'~'9';'a'~'z';'A'~'Z';并非我们指的阿拉伯数子,这也就是为啥

int a = 9;

isalnum(a);的返回值为0了,按理说为非零,但是这里却为0,因为人家说的数字指的是ASCII中的字符数字,并非我们int a = 9;的这个数字哦

【函数2:isalpha 】

【格式】

int isalpha(int ch);
【功能】

当变量为字母表中的字母时,函数返回非0值,否则返回0。各种语言的字母表互不相同,对于英语来说,字母表由大写和小写的字母A到Z组成

【入参】

int ch:字符或者数字

【返回值】

int类型的数据,真(非0) 或 假(0)

【test_code】

输出结果:

【总结】

1.注意范围,根据ASCII表可以知道,大写字母:65-90 小写字母:97-122

2.isalpha就算不写入参数,也不报错,只是编译的时候提示warning,输出为乱码

【函数3:iscntrl 】

【格式】

int iscntrl(int ch);
【功能】

当变量是控制字符时,函数返回非0,否则返回0。

【入参】

int ch:字符或者数字

【返回值】

int类型的数据,真(非0) 或 假(0)

【test_code】

输出结果:

【总结】

1.控制字符是在ASCII码中的字符,其ASCII码的值在0~31范围内,和127(DEL字符)。这些字符不会被打印出来,而是用于控制或指示特定行为,比如换行符、制表符等。例如,ASCII码为10(换行符)和9(制表符)的字符就是控制字符。

2.注意范围:控制字符0-31,和127

3.iscntrl就算不写入参数,也不报错,只是编译的时候提示warning,输出为乱码

【函数4:isdigit 】

【格式】

int isdigit(int ch);
【功能】

用于检查一个字符是否是数字字符('0'-'9'),若是,返回真,否则,返回假

【入参】

int ch:字符或者数字

【返回值】

int类型的数据,真(非0) 或 假(0)

【test_code】

输出结果:

【总结】

1.需要注意的是,isdigit()函数只能判断单个字符是否是数字字符,不能检查一个字符串是否全由数字字符组成。如果想要检查一个字符串是否为数字,需要使用其他方法,如使用循环遍历字符串的每个字符并逐个判断

2.数字字符'0'-'9',对应十进制是48-57

3.isdigit不入参的话,编译也不报错,也不提示,还正常运行,这个也要注意,如图中,是比较隐晦的bug

【函数5:isgraph 】

【格式】

int isgraph(int ch);
【功能】

如果变量为除空格之外的任何可打印字符,则函数返回非0值,否则返回0

【入参】

int ch:字符或者数字

【返回值】

int类型的数据,真(非0) 或 假(0)

【test_code】

输出结果:

【总结】

1.打印字符如ASCII表所示:

2.若入参为十进制,则按照这个在ASCII中找,若为字符,则按照字符在表中找

3.isgraph不入参的话,编译也不报错,也不提示,还正常运行,这个也要注意,如图中,是比较隐晦的bug

【函数6:islower 】

【格式】

int islower(int ch);
【功能】

如果变量是小写字母,函数返回非0值,否则返回0。

【入参】

int ch:字符或者数字

【返回值】

int类型的数据,真(非0) 或 假(0)

【test_code】

输出结果:

【总结】

1.小写字母范围:97-122

2.若入参为十进制,则按照这个在ASCII中找,若为字符,则按照字符在表中找

3.islower不入参的话,编译也不报错,也不提示,还正常运行,这个也要注意,如图中,是比较隐晦的bug

【函数7:isprint 】

【格式】

int isprint(int ch);
【功能】

如果变量是可打印字符(含空格),则函数返回非0值,否则返回0。

【入参】

int ch:字符或者数字

【返回值】

int类型的数据,真(非0) 或 假(0)

【test_code】

输出结果:

【总结】

1.可打印字符见ASCII表格,如下:(范围:32-126)

2.若入参为十进制,则按照这个在ASCII中找,若为字符,则按照字符在表中找

3.isprint不入参的话,编译也不报错,也不提示,还正常运行,这个也要注意,如图中,是比较隐晦的bug

【函数8: ispunct】

【格式】

int ispunct(int ch);
【功能】

如果变量是除空格、字母和数字外的可打印字符,则函数返回非0,否则返回0。

【入参】

int ch:字符或者数字

【返回值】

int类型的数据,真(非0) 或 假(0)

【test_code】

输出结果:

【总结】

1.范围如表中红色框内:

2.若入参为十进制,则按照这个在ASCII中找,若为字符,则按照字符在表中找

3.ispunct不入参的话,编译也不报错,也不提示,还正常运行,这个也要注意,如图中,是比较隐晦的bug

【函数9:isspace 】

【格式】

int isspace(int ch);
【功能】

当变量为空白字符(包括空格、换页符、换行符、回车符、水平制表符和垂直制表符)时,函数返回非0,否则返回0

【入参】

int ch:字符或者数字

【返回值】

int类型的数据,真(非0) 或 假(0)

【test_code】

输出结果:

【总结】

1.对照ASCII表,如下:

2.若入参为十进制,则按照这个在ASCII中找,若为字符,则按照字符在表中找

3.isspace不入参的话,编译也不报错,也不提示,还正常运行,这个也要注意,如图中,是比较隐晦的bug

【函数10: isupper】

【格式】

int isupper(int ch);
【功能】

如果变量为大写字母,函数返回非0,否则返回0。

【入参】

int ch:字符或者数字

【返回值】

int类型的数据,真(非0) 或 假(0)

【test_code】

输出结果:

【总结】

1.大写字母字符的范围是:65-90

2.若入参为十进制,则按照这个在ASCII中找,若为字符,则按照字符在表中找

3.isupper不入参的话,编译也不报错,也不提示,还正常运行,这个也要注意,如图中,是比较隐晦的bug

【函数11:isxdigit 】

【格式】

int isxdigit(int ch);
【功能】

如果该字符是一个十六进制数字(0-9、A-F、a-f),则返回非零值;否则返回零

【入参】

int ch:字符或者数字

【返回值】

int类型的数据,真(非0) 或 假(0)

【test_code】

输出结果:

【总结】

1.0-9 a-f A-F 这三个是十六进制数,第一个0-9怎么理解?这个不懂

2.若入参为十进制,则按照这个在ASCII中找,若为字符,则按照字符在表中找

3.isxdigit不入参的话,编译也不报错,也不提示,还正常运行,这个也要注意,如图中,是比较隐晦的bug

【函数12:tolower 】

【格式】

int tolower(int ch);
【功能】

当ch为大写字母时,返回其对应的小写字母;否则返回ch。

【入参】

int ch:字符或者数字

【返回值】

int类型数据,返回其对应的小写字母;否则返回ch

【test_code】

输出结果:

【总结】

1.若入参为十进制,则按照这个在ASCII中找,若为字符,则按照字符在表中找

2.tolower不入参的话,编译会提示note,但不影响编译,还正常运行,这个也要注意,如图中,是比较隐晦的bug

【函数13:toupper 】

【格式】

int toupper(int ch);
【功能】

当ch为小写字母时,返回其对应的大写字母;否则返回ch

【入参】

int ch:字符或者数字

【返回值】

int类型数据,返回其对应的大写字母;否则返回ch

【test_code】

输出结果:

【总结】

1.若入参为十进制,则按照这个在ASCII中找,若为字符,则按照字符在表中找

2.toupper不入参的话,编译会提示note,但不影响编译,还正常运行,这个也要注意,如图中,是比较隐晦的bug

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值