当前位置: 首页 > news >正文

常见字符串函数的使用,你确定不进来看看吗?

在这里插入图片描述

👦个人主页:@Weraphael
✍🏻作者简介:目前是C语言学习者
✈️专栏:C语言航路
🐋 希望大家多多支持,咱一起进步!😁
如果文章对你有帮助的话
欢迎 评论💬 点赞👍🏻 收藏 📂 加关


前言

  1. ​以下所以库函数的查阅都在cplusplus网站
  2. 以下字符串函数在使用前都要加上#include <string.h>

目录

  • 前言
    • 1.strlen
        • (1)strlen函数介绍
        • (2)strlen函数用法
        • (3)strlen函数的注意事项
        • (4)strlen函数的模拟实现(三种)
    • 2.strcpy
        • (1)strcpy函数介绍
        • (2)strcpy函数用法
        • (3)strcpy函数的注意事项
        • (4)strcpy函数的模拟实现
    • 3.strcat
        • (1)strcat函数介绍
        • (2)strcat函数用法
        • (3)strcat函数的注意事项
        • (4)strcat函数的模拟实现
    • 4.strcmp
        • (1)strcmp函数介绍
        • (2)strcmp函数用法
        • (3)strcmp函数的模拟实现
    • 5.strncpy
        • (1)strncpy函数介绍
        • (2)strncpy函数用法
        • (3)strncpy函数的注意事项
        • (4)strncpy函数的模拟实现
    • 6.strncat
        • (2)strncat函数用法
        • (3)strncat函数的注意事项
        • (4)strncat函数的模拟实现
    • 7.strncmp
        • (1)strncmp函数介绍
        • (2)strncmp函数用法
    • 8.strstr
        • (2)strstr函数用法
        • (3)strstr函数的模拟实现
    • 9.strtok
        • strtok函数介绍及用法
    • 10.strerror
        • (1)strerror函数介绍
        • (2)strerror的用途
        • (3) 类似函数perror

1.strlen

(1)strlen函数介绍

功能:计算的是字符串中’\0’前面出现的字符个数(不包含’\0’)

​​​​​在这里插入图片描述

(2)strlen函数用法

在这里插入图片描述

(3)strlen函数的注意事项

  1. 参数指向的字符串必须要以’\0’结束
  2. 注意函数的返回值是size_t,是无符号的;因为字符串的长度不可能为负数
    在这里插入图片描述

(4)strlen函数的模拟实现(三种)

①计数器count
​​​​在这里插入图片描述
②递归法

​详细解析请参考《递归篇》 点我跳转

在这里插入图片描述
③指针 - 指针

​详情解析请参考《初识指针》点我跳转

在这里插入图片描述

2.strcpy

(1)strcpy函数介绍

功能:拷贝字符串

在这里插入图片描述

(2)strcpy函数用法

在这里插入图片描述

(3)strcpy函数的注意事项

  1. 源字符串必须以‘\0’结束
  2. 目标空间必须足够大,以确保能放下源字符串
  3. 目标空间必须可变,不能用const修饰

(4)strcpy函数的模拟实现

在这里插入图片描述

3.strcat

(1)strcat函数介绍

功能:在字符串后追加字符串

在这里插入图片描述

(2)strcat函数用法

在这里插入图片描述

(3)strcat函数的注意事项

  1. 源字符串必须以‘\0’结束
  2. 目标空间必须要以’\0’结束
  3. 目标空间必须足够大,能容纳源字符串的内容
  4. 保证目标空间可修改,不能加const修饰
  5. strcat不能自己给自己追加
    解释:
    字符串追加是从目标空间的’\0’开始追加的,追加时会把’\0’覆盖掉,这样字符串就没有结束标志,导致覆盖\0后,源字符串没有以\0结尾,导致死循环
    在这里插入图片描述

(4)strcat函数的模拟实现

在这里插入图片描述

4.strcmp

(1)strcmp函数介绍

功能:比较字符串大小(字典序)

在这里插入图片描述

(2)strcmp函数用法

在这里插入图片描述

(3)strcmp函数的模拟实现

在这里插入图片描述

5.strncpy

(1)strncpy函数介绍

  • strncpy与strcpy的功能相同,都是拷贝字符串
  • 不同的是:strncpy可以控制拷贝字符串的长度

在这里插入图片描述

(2)strncpy函数用法

在这里插入图片描述

(3)strncpy函数的注意事项

  1. 因为受拷贝长度限制,strncpy不会拷贝源字符串的’\0’(看用法),而strcpy会拷贝源字符的’\0’
  2. 如果源字符串的长度小于num,则拷贝完源字符串之后,它会在目标空间后面自动追加’\0’,直到num个
    在这里插入图片描述

(4)strncpy函数的模拟实现

在这里插入图片描述

6.strncat

  • strncat与strcat的功能相同,都是字符串追加
  • 不同的是:strncat可以=控制拷贝字符串的长度

在这里插入图片描述

(2)strncat函数用法

在这里插入图片描述

(3)strncat函数的注意事项

  1. strncat在目标字符数组追加完之后会自动补’\0’,所以它可以自己追加自己
    在这里插入图片描述

(4)strncat函数的模拟实现

在这里插入图片描述

7.strncmp

(1)strncmp函数介绍

  • 与strcmp的功能相同,都是字符串比较
  • 不同的是:strncmp可以控制字符串比较的长度

在这里插入图片描述

(2)strncmp函数用法

在这里插入图片描述

8.strstr

功能:从str1中找str2(找子串)

在这里插入图片描述

(2)strstr函数用法

在这里插入图片描述

(3)strstr函数的模拟实现

【分析】
情况1:
在这里插入图片描述
情况2:
在这里插入图片描述
【代码实现】

#include <stdio.h>
#include <string.h>
char* my_strstr(const char* str1, const char* str2)
{//当str2为空串,直接返回str1的地址if (*str2 == '\0'){return str1;}//用s1和s2代替str1和str2来遍历const char* s1 = str1;const char* s2 = str2;//p记录str1的位置const char* p = str1;while (*p){s1 = p;s2 = str2;while (*s1 != '\0' && *s2 != '\0' && *s1 == *s2){s1++;s2++;}//*s2=\0,说明找到子串了if (*s2 == '\0'){return p;}//循环中s1和s2不相等,让p++找下一个位置p++;}//当*p = ‘\0’,说明p遍历完整个数组都没找到子串return NULL;
}
int main()
{char arr1[] = "abbbbcdef";char arr2[] = "\0";char* res = my_strstr(arr1, arr2);//从arr1中找arr2if (res == NULL){printf("找不到\n");}else{printf("找到了:%s\n", res);}return 0;
}

9.strtok

strtok函数介绍及用法

功能:分割字符串

在这里插入图片描述
【解析】

  • 如上图,delimiters参数是一个字符串,它是分割符的字符集合
  • str是被切割的字符串,不能用const修饰
  • 函数返回类型是char*

strtok的作用

  1. strtok找到str中的分割符,并把分割符变成\0,再返回一个指向这个标记的起始地址
    在这里插入图片描述
  2. ①strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记,strtok函数将保存它在字符串中的位置。
    ②strtok函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标记。
    在这里插入图片描述
    【完整版】
    在这里插入图片描述

10.strerror

(1)strerror函数介绍

功能:返回错误码所对应的错误信息

  • C语言的库函数在运行的时候,如果发生错误,就会将错误码存在一个全局变量,这个变量是errno
    这些错误码通常是一些数字:1,2,3,4,5…
    在这里插入图片描述

在这里插入图片描述

(2)strerror的用途

  • fopen函数简介在这里插入图片描述

【用法实现】

在这里插入图片描述

(3) 类似函数perror

功能:直接打印错误信息,在打印错误信息前,会先打印自定义的信息
在这里插入图片描述

【用法展现】
在这里插入图片描述

http://www.lryc.cn/news/479.html

相关文章:

  • Elasticsearch:在搜索中使用衰减函数(Gauss)
  • 微信小程序 Springboot英语在线学习助手系统 uniapp
  • LeetCode算法题解——双指针2
  • 线性杂双功能peg化试剂——HS-PEG-COOH,Thiol-PEG-Acid
  • Linux第三讲
  • SpringBoot07:SpringSecurity
  • C++ 浅谈之 STL Vector
  • 【个人作品】非侵入式智能开关
  • 数据存储技术复习(三)未完
  • ThinkPHP数据库迁移工具
  • 代理模式(Proxy Pattern)
  • Elasticesearch内存详解
  • SpringCloud之断路器聚合监控
  • 凭借这份《2022测试八股文》候选者逆袭面试官,offer拿到手软
  • 【i2c协议介绍】
  • 167. 两数之和 II - 输入有序数组
  • 编译与链接------《程序员的自我修养》
  • 5分钟搞懂 强缓存与协商缓存
  • Ts笔记第一天
  • Android 12 Activity启动流程
  • VCS®/VCSi™User Guide
  • MongoDB简介及SpringBoot整合
  • 读书思考:步步惊心的《技术陷阱》
  • 求你了,不要再在对外接口中使用枚举类型了!
  • Java开发学习(四十六)----MyBatisPlus新增语句之id生成策略控制及其简化配置
  • 章鱼哥听歌
  • 软件测试电商项目实战(写进简历没问题)
  • 算法导论—分治法思想、动态规划思想、贪心思想
  • Spring-Data-Jpa实现继承实体类
  • 多线程环境下的伪共享