字符串操作函数
strlen(测量字符串长度)
- ‘\0’是字符串的结束标志,所测字符串长度不包括’\0’
- 函数返回值类型为size_t(无符号整形)
strcpy(字符串拷贝)
- ‘\0’是拷贝结束标志,并且源字符串中’\0’也被拷入目标字符串
- 目标字符串空间必须足够存放源字符串
strcat(字符串连接)
- 目标字符串中的’\0’被源字符串第一个字符所覆盖,且源字符串必须以’\0’结束
- 禁止自己为自己追加,因为自己为自己追加时首先源字符串的’\0’被自己的第一个元素所覆盖,因此失去了追加结束标志,造成死循环。
strcmp(字符串比较函数)
- 比较的并不是字符串的长度,而是首字符的ASCII码值,若首字符相同,则比较下一个字符,以此类推。
- 易错点:比较的返回值并不是1、-1、0规定数值,在不同编译平台,返回不同的值,但标准规定,返回值是大于零或者小于零或者等于零的数即可
strncpy、strncat、strncmp
- 以上三个函数相比于strcpy、strcat、strcmp函数只是相对比较安全,因为在函数传参时多了一个限制操作长度参数,而strcpy、strcat、strcmp函数结束操作必须要用到’\0’。
内存操作函数
应用场景:因为前面所介绍的函数仅仅局限于字符串数据类型,当其它数据类型也需要类似操作时,难以满足需求,便引入了内存操作函数,直接进行内存的操作。
函数的功能是从源内存地址的起始位置开始拷贝若干个字节到目标内存地址中
和memcpy的差别就是memmove函数处理的源内存块和目标内存块是可以重叠的。如果源空间和目标空间出现重叠,就得使用memmove函数处理。
定义变量时一定要进行初始化,尤其是数组和结构体这种占用内存大的数据结构。在使用数组的时候经常因为没有初始化而产生“烫烫烫烫烫烫”这样的野值,俗称“乱码”。每种类型的变量都有各自的初始化方法,memset() 函数可以说是初始化内存的“万能函数”,通常为新申请的内存进行初始化工作。它是直接操作内存空间,mem即“内存”(memory)的意思。
顾名思义,比较内存区域buf1和buf2的前count个字节。
源代码
相关函数模拟实现的源码链接: github代码仓库链接.