c语言-库函数strstr()、strtok()、strerror()介绍

2024-01-17 09:20

本文主要是介绍c语言-库函数strstr()、strtok()、strerror()介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、库函数strstr()
    • 1.1 strstr()介绍
    • 1.2 strstr()模拟实现
  • 二、库函数strtok()
    • 2.1 strtok()介绍
  • 三、库函数strerror()
    • 3.1 strerror()介绍
  • 总结


前言

本篇文章介绍c语言库函数strstr()、strtok()、strerror()的使用。


一、库函数strstr()

1.1 strstr()介绍

strstr()实现的是查找子字符串。
下面是cplusplus网站关于这个库函数的介绍以及使用。
在这里插入图片描述
说明:
参数str1:被扫描的字符串
参数str2:需要查找的子字符串
返回值:
返回值不为NULL,说明在str1存在str2,返回str1第一次出现str2的首字符地址
返回值为NULL,说明str1不存在str2

strstr()的使用:
在这里插入图片描述

1.2 strstr()模拟实现

实现思路:

指针变量pstr1保存每一次比较的起始位置
步骤一:指针变量s1初始化为pstr1
步骤二:指针变量s2初始化为str2
步骤三:指针变量s1和指针变量s2循环比较
步骤四:如果s2指向了\0,说明比较完成,返回pstr1;否则pstr1++,重复以上步骤。
步骤五:循环结束,返回NULL

在这里插入图片描述
代码实现:

char* my_strstr(const char* str1, const char* str2)
{assert(str1 && str2); //空指针判断const char* s1 = str1;const char* s2 = str2;const char* pstr1 = str1;//psrt1记住的是s1比较的起始位置while (*pstr1){s1 = pstr1;s2 = str2;//比较while (*s1 != '\0' && *s2 != '\0' && *s1 == *s2){s1++;s2++;}//判断s2是否对比到\0//比较到\0,说明子串匹配//比较不到\0,说明子串不匹配if (*s2 == '\0'){return (char*)pstr1;}pstr1++;}return NULL;
}

代码测试:
在这里插入图片描述


二、库函数strtok()

2.1 strtok()介绍

strtok()实现的是切割字符串。
下面是cplusplus网站关于这个库函数的介绍以及使用。
在这里插入图片描述
在这里插入图片描述
说明:

  • delimiters参数是一个字符串,保存分隔符的字符集合。
  • str参数是一个字符串,包含0个或多个由分隔符分割的字符串
  • strtok()函数每找到一个标记,会将其用\0结尾并返回指向这个标记的指针。
  • strtok()函数会改变被操作的字符串,所以在使用strtok()函数时,一般将操作的是临时拷贝的字符串
  • strtok()函数是一个可以连续调用的函数,表示操作的是同一个字符串;第一次调用的第一个参数不为NULL,其余调用参数为NULL。
  • strtok()函数的第一个参数不为NULL,函数将找到str中的第一个标记,strtok()函数将保持它在字符串中的位置
  • strtok()函数的第一个为参数为NULL,函数将在同一个字符串中被保存的位置开始,查找下一个标记。
  • 如果字符串中不存在更多的标记,返回NULL

strtok()的使用:
在这里插入图片描述

切割过程:
在这里插入图片描述
思考:
如何保留上一次切割的标记位置?

利用static关键字

关于static关键字的作用,可以查看在c语言基础专栏的一篇文章:
https://blog.csdn.net/pyc68/article/details/134887444


三、库函数strerror()

3.1 strerror()介绍

strerror()返回的是错误码对应的错误信息。
下面是cplusplus网站关于这个库函数的介绍以及使用。

在这里插入图片描述
说明:

  • c语言库函数调用失败时,会生成对应的错误码,这个错误码保存在errno这个全局变量中
  • errno是一个全局变量,保存发生最近错误的错误码

strerror()的使用:
在这里插入图片描述


总结

本篇文章介绍了strstr()、strtok()、strerror()库函数的使用。

这篇关于c语言-库函数strstr()、strtok()、strerror()介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/615561

相关文章

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

Go语言中Recover机制的使用

《Go语言中Recover机制的使用》Go语言的recover机制通过defer函数捕获panic,实现异常恢复与程序稳定性,具有一定的参考价值,感兴趣的可以了解一下... 目录引言Recover 的基本概念基本代码示例简单的 Recover 示例嵌套函数中的 Recover项目场景中的应用Web 服务器中

MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)

《MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)》掌握多表联查(INNERJOIN,LEFTJOIN,RIGHTJOIN,FULLJOIN)和子查询(标量、列、行、表子查询、相关/非相关、... 目录第一部分:多表联查 (JOIN Operations)1. 连接的类型 (JOIN Types)

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe

Spring Security介绍及配置实现代码

《SpringSecurity介绍及配置实现代码》SpringSecurity是一个功能强大的Java安全框架,它提供了全面的安全认证(Authentication)和授权(Authorizatio... 目录简介Spring Security配置配置实现代码简介Spring Security是一个功能强

Go语言中使用JWT进行身份验证的几种方式

《Go语言中使用JWT进行身份验证的几种方式》本文主要介绍了Go语言中使用JWT进行身份验证的几种方式,包括dgrijalva/jwt-go、golang-jwt/jwt、lestrrat-go/jw... 目录简介1. github.com/dgrijalva/jwt-go安装:使用示例:解释:2. gi