字符函数和字符串函数
一·字符函数
1.字符分类函数
顾名思义就是帮助我们分类字符的!它们都包含在<ctype.h>的头文件中。
如图:“isdigit”就是判断字符是否是‘0’~‘9’的字符
那如此我们就可实现把字符串中的大小写进行转换,如图:
2.字符转换函数
顾名思义就是帮助我们转换字符的!效果和上面我们实现的是一样的,大家可以去试一试!
二·字符串函数
它们的头文件都包含在<string.h>中!
1.strlen的三种模拟实现
strlen的解析
首先它的返回值是size_t类型(是无符号整型),它的参数被const修饰(为了传进去的字符串不被更改),它的作用是:从给的地址开始计算到\0之前的字符串长度
如图:来比较一下strlen的返回值
这里 **strlen(“asd”) - strlen(“askjhdfas”)**明明 3<9 那为什么打印出来是“>”呢?这就是strlen的返回值的问题了
无符号整型“3”-无符号整型’9‘=无符号整型’-6‘,而-6是以补码的形式存储在计算机的,计算下来是一个很大的数反正一定比0大所以这里是">‘’。如图:
方法一:指针-指针
之前说过指针相减的绝对值是两个指针之间的距离,那么就可以用来计算字符串的长度,如图:
方法二:计数器
一般字符串都以’\0‘结尾,依靠这个特性来计算字符串长度。(字符数组除外因为可能不是 \0结尾)
如图:
方法三:递归
递归是个很好的方法,没有创建变量就能计算出字符串长度
如图:
2.strcpy使用和模拟实现
strcpy的解析
• 源字符串必须以 ‘\0’ 结束。
• 会将源字符串中的 ‘\0’ 拷贝到目标空间。!!!
• 目标空间必须足够大,以确保能存放源字符串。
• 目标空间必须可修改。
strcpy的返回值是char*
strcpy的作用:是把source中的内容复制到destination中,如图:
strcpy的模拟实现
3.strcat使用和模拟实现
strcat的解析
strcat的作用:是把source中的内容拼接到destination后!
• 源字符串必须以 ‘\0’ 结束。
• 目标字符串中也得有 \0 ,否则没办法知道追加从哪里开始。
• 目标空间必须有足够的大,能容纳下源字符串的内容。
• 目标空间必须可修改。
如图:
strcat的模拟实现
4.strcmp使用和模拟实现
strcmp的解析
strcmp的作用是比较两个字符串的长度。但实际上比较的是ASCII的大小
• 标准规定:
◦ 第一个字符串大于第二个字符串,则返回大于0的数字
◦ 第一个字符串等于第二个字符串,则返回0
◦ 第一个字符串小于第二个字符串,则返回小于0的数字
如图: