字符串常用函数介绍及模拟实现

阿里云国内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原创首发
🌏欢迎各位指出错误非常感谢~

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6