关于c语言字符串函数和一些内存函数的的简介
求字符串长度的函数
strlen函数介绍![在这里插入图片描述](https://img-blog.csdnimg.cn/20190301142458376.jpg)注
模拟实现
. [1 ]计数器方式
因为strlen 是求字符串长度的函数,所以不能改变字符串本身,所以形参用const修饰
创建一个计数器count,每当跳到下一个字符时,count加一,一直到字符串结束,count中记录的就是字符串长度
. [2 ] 不创建临时变量计数器
.
此方法用了函数的递归思想,每回传出的参数都是上一个参数加一,也就是每次跳到字符串的下一个字符,当跳到字符串最后一个字符时,返回0,然后逐层返回,最后求出长度
. [3 ]创建一个指针变量
长度不受限制的字符串函数
strcpy
模拟实现
字符串拷贝函数,将src拷贝至dest,不能修改原字符串内容,所以用const修饰
assert函数是断言,保证指针有效性。整个while循环用来完成复制,src++是先读取字符再让指针指向下一个字符
所以dest++也是如此,当字符串到最后一个字符时while就跳出循环,并返回。
strcmp
模拟实现
字符串比较函数是按字典序进行比较的,在c中也就是按字符对应的ASCII码码值的大小来进行比较,如果前面的大于后面的,则返回大于0的数,小于返回小于0的数,等于返回0.因为只进行比较,所以不能改变原字符串,所以要用const进行修饰。
strstr
长度受限制的字符串函数介绍
此类函数是为了防止上一类函数存在缓冲区溢出的情况
strncmp
内存操作函数
memcpy
此函数因为是内存复制函数,但他并不是按类型复制,而是按字节复制,这个函数有缺点,就是万一要拷贝到的区域与你要拷贝的区域有重叠,那么会有不可预料的错误。
模拟实现
此函数有三个参数,一个是要拷贝到的区域的位置,另外一个是要拷贝的区域,还有一个是拷贝多少个字节的大小。
在进行拷贝操作时,由于函数的定义形参的时候,用的时void*任意类型指针,该指针不能进行解引用,所以,如果要操作该类指针里面的值时,要进行强制类型转换。
memmove
该函数是针对上面的函数有缓冲区重叠的情况。
模拟实现
此函数较上一个函数多了一个判断,判断拷贝的区域与被拷贝的区域是否有重叠,在进行操作时还是要强制类型转换。