字符串常用函数介绍及模拟实现
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
🐎作者的话
本文介绍字符串常用的函数如何使用及其模拟实现~
跳跃式目录
strlen介绍
函数原型strlenconst char* str
返回值size_t
用法将从str开始到’\0’结束这段空间内字符的个数返回不包含’\0’。
- 返回值是size_ t类型因此不会出现负数用于长度比较时需注意.
- strlen模拟实现
法一循环
法二递归
法三指针-指针
效果图
strcpy介绍
函数原型strcpychar* targetconst char* source)
返回值char*
用法将从source开始到’\0’结束的字符串拷贝到target里面包括’\0’。
- target空间必须足够大
- target不能是常量字符串即可以修改
- strcpy模拟实现
效果图
strcat介绍
函数原型strcatchar* targetconst char* source
返回值char*
用法将从source开始到’\0’结束的字符串接到target的’\0’后面该’\0’也被替换
- 目标函数需要有足够的空间
- 目标空间不能是常量字符串即可以修改
- 两个字符串必须有’\0’
- strcat模拟实现
一普通实现
效果图
二创新实现自己拼接自己
strcmp介绍
函数原型strcmpconst char* str1const char* str2
返回值int
用法按照ASCII码依次比较1>2则返回正数1<2则返回负数相等返回0.
- 在VS中正数返回1负数返回-1
- 但不是所有编译器都是这样
- 判断时最好不用1或-1
- strcmp模拟实现
此处即可用双方都不是’\0’判断也可以用双方是否相等判断
strncpy介绍
函数原型strncpychar* targetconst char* source,unsigned int n)
返回值char*
用法将source起n个字符拷贝到target中。
- 若n大于source的长度多出来的默认拷贝’\0会改变字符串结束位置
- strncpy模拟实现
效果图
strncat介绍
函数原型strncatchar* targetconst char* sourceunsigned n
返回值char*
用法把source起的n个字符接到target后面第一个’\0’被替换会在最后再补一个’\0’。
- 若n大于source的长度则多出来的默认接入’\0’.
- strncat模拟实现
效果图
strncmp介绍
函数原型strncmpconst char* str1const char* str2unsigend n
返回值int
用法对str1和str2的前n个进行比较不足默认为’\0’
- strncmp模拟实现
效果图
strstr介绍
函数原型strstr(const char* arr1, const char* arr2)
返回值char*
用法在arr1里面寻找第一个出现的arr2返回第一次出现的首元素地址
- 若arr2大于arr1返回null
- 若arr2的长度和arr1相等用strcmp判断
- strstr模拟实现
先排除特殊情况随后判断
strchr介绍
函数原型strchrconst char* strchar c
返回值char*
用法找到str中第一次出现c的位置返回地址。
- strchr模拟实现
strrchr介绍
函数原型strrchrconst char* strchar c
返回值char*
用法返回str中最后一次出现c的位置。
- strrchr模拟实现
memcpy介绍
函数原型memcpyvoid* targetconst void* sourceunsigned n
返回值void*
用法内存拷贝
- 拷贝n个字节,不论什么类型,低位开始访问
- 若自己拷贝自己,请用memmove
- memcpy模拟实现
memmove介绍
函数原型:memcpyvoid* targetconst void* sourceunsigned n)
返回值:void*
用法:memcpy的自身拷贝自身用法
- memmove是momcpy的上位替代,可以避免自身拷贝时的重叠现象
- 如果程序需要重叠呢?
- VS现在标准库里memcpy和memmove已经一样了.
- mommove模拟实现
memcmp介绍
函数原型:my_memcmp(const void* data1, const void* data2,unsigned n)
返回值:int
用法:和str相同,从前往后按字典序比较
- memcmp模拟实现
memset介绍
函数原型:memset(void* arr,int n,unsigned t)
返回值:void*
将arr的前t个字节设置为n
- memset模拟实现
strtok介绍
函数原型:strtok(const char* str1,const char* str2)
返回值:char*
用法:检索arr1中每个出现的arr2中的字符,并将他们分成多个字符串.
- 过于简单 在此不再展示代码~
📖博客主页咚咚小圆帽的CSDN主页
🎁感谢您的👍点赞⭐️收藏❤️关注🔗转发~
📚所属专栏C语言进阶
📑相关文章
🔖今日寄语 加油~
⚠️本文由咚咚小圆帽于2023年1月14日在CSDN原创首发
🌏欢迎各位指出错误非常感谢~