【再识C进阶3(下)】详细地认识字符分类函数,字符转换函数和内存函数
温馨提示:这篇文章已超过390天没有更新,请注意相关的内容是否还可用!
前言
💓作者简介: 加油,旭杏,目前大二,正在学习C++,数据结构等👀
💓作者主页:加油,旭杏的主页👀
⏩本文收录在:再识C进阶的专栏👀
🚚代码仓库:旭日东升 1👀
🌹欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖
学习目标:
在上一篇博客中,我们学习了字符串函数,字符串是由字符构成的,那么这篇博客将会为大家讲解字符分类函数,字符转换函数以及内存函数,那么字符就又有了一片新天地。这篇博客还是会很简单的,废话不多说,我们来开始写博客。
学习内容:
通过上面的学习目标,我们可以列出要学习的内容:
- 字符分类函数
- 字符转换函数
- 内存函数
一、字符分类函数
先来看一下全部字符分类函数的大纲,总共有12个,请看下面表格:
| 函数 | 如果他的参数符合下列条件就返回真 |
| iscntrl | 任何控制字符 |
| isspace | 空白字符:空格;换页'\f';换行'\n';回车'\r',制表符'\t'或者垂直制表符'\v' |
| isdigit | 十进制数字 0~9 |
| isxdigit | 十六进制数字,包括所有的十进制数字,小写字母 a~f,大写字母 A~F |
| islower | 小写字母 a~z |
| isupper | 大写字母 A~Z |
| isalpha | 小写字母 a~z 或大写字母 A~Z |
| isalnum | 字母或者数字,a~z,A~Z,0~9 |
| ispunct | 标点符号,任何不属于数字或者字母的圆形字符(可打印) |
| isgraph | 任何圆形字符 |
| isprint | 任何可打印的字符,包括圆形字符和空白字符 |
1.1 iscntrl字符函数
1.1.1 控制字符的概念(了解一下)
在小编刚听到这个函数时,我在纳闷控制字符是什么?控制字符的概念简单来讲,就是出现于特定的信息文本中,表示某一控制功能的字符。
精确来讲,就是在ASCII码中,第0~31号及第127号(共33个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等。
1.1.2 iscntrl函数的作用
其功能就是检查字符c是否为控制字符,如果是,则返回真(非0的数,有可能是负数),如果不是,则返回假。
1.2 isspace字符函数
其功能是检查字符c是否为空白字符,空白字符的概念在上面表格已经写的很详细了,当然在图中也很清楚。
1.3 isdigit字符函数
这个函数还是用的比较多的,因为其功能是检查字符c是否为十进制数字,十进制数字想必大家都很清楚,所以这个函数还算能用的上(大家还是要重视一下)。
1.4 isxdigit字符函数
这个函数的范围和上面的isdight字符函数差不多,所以小编推断这个函数应该会用的很少,但还是要看一下,有个印象。这个函数的功能是检查字符c是否为十六进制数字,包括所有的十进制数字,小写字母 a~f,大写字母 A~F。
1.5 islower字符函数
这个函数就有点意思,功能是检查字符c是否为小写字母,在一些题目中可能会用到这个函数,这个函数还是要记住为好。
举个例子:
题目:请回答出你所你输入的字符串中小写字母的个数为多少?
代码:
#include
#include
int main()
{
int n = 0;
scanf("%d", &n);
char arr[20];
for (int i = 0; i
1.6 isupper字符函数
有了检查是否为小写字母的函数,那必然会有检查大写字母的字符函数,同样,我们在网站来看看这个函数吧!这个用法是和上面的字符函数的用法是基本一样的,这里就不在赘述。
1.7 isalpha字符函数
这个函数就是将 islower 字符函数和 isupper 字符函数结合起来,其功能是将检查是否为26个英文字母。个人感觉不是很好用,因为其的范围实在是太大了。
二、字符转换函数
字符转换函数一共有两个,一个是 tolower 字符函数,一个是 toupper 字符函数。这两个字符还是比较重要的,因为在题目的求解中会用到这两个字符函数。我们需要先来了解这两个字符函数的功能之后,我们再来用一个习题进行巩固练习。
2.1 tolower字符函数
2.1.1 函数功能
这个函数将判断所选的字符c是否为大写字母,如果是大写字母的话,将这个字符c转换为小写字母;如果不是大写字母,将不会转换这个字符c。大致工作原理就是利用 islower 字符函数进行判断,然后将这个字符函数进行处理即可。
2.1.2 函数例题
题目:
将一个字符串中的所有大写字母变成对应的小写字母,其它字母不变。例如:对字符串“ABC12! EF”执行函数后输出结果为“abc12! ef”。
代码:
这道题目的代码, 我们用两种方式进行解决,一种是运用库函数tolower,一种是不运用这个函数,我们来进行一些区别。
//如果使用库函数, 写的代码
void toUp(char* str)
{
int len = strlen(str);
for (int i = 0; i
//如果不用库函数,代码会是什么样子的
void toUp(char* str)
{
int len = strlen(str);
for (int i = 0; i = 'a' && str[i] = 'a' && str[i] 








