C语言字符串函数strstr、strtok和strerror

2024-03-17 18:20

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

1.strstr函数

函数作用:

    在字符串1中查找是否存在字符串2。

例子:

"bbc"中找”bc“

函数定义:

const char * strstr ( const char * str1, const char * str2 );
  • str1字符串1的首字符的指针。
  • str2字符串2的首字符的指针。
  • const修饰是因为只用于查找,不做修改,防止写错误代码。

函数返回值:

        如果为真则返回字符串2在字符串1首次出现的地址,如果为假则不存在返回NULL(空指针)

模拟实现:

const char* my_strstr(const char* str1, const char* str2)
{//如果*str2指向的为空就返回str1if(!*str)return str1;const char* p1 = NULL;//临时指针变量const char* p2 = NULL;while (*str1)//遍历每个字符,结束条件'\0'{//如果遇到相等,就像后判断if (*str1 == *str2){//使用中间指针去判断,防止str1和str2的起始位置丢失p1 = str1;p2 = str2;//判断是否相等,相等就继续向下判断while (*p1 == *p2 && *p1 != '\0' && *p2 != '\0'){p1++;p2++;}//如果此时p2=='\0',就说明找到了if (*p2 == '\0')return str1;//如果*p1=='\0',*p2!='\0'就说明长度不够了,找不到了if (*p1 == '\0')return NULL;}str1++;}return NULL;
}

 

2.strtok函数

函数作用:

通过指定的分隔符切割字符串

例子:

'.'切割"bbc.bcc"

 函数定义:

char * strtok ( char * str, const char * delimiters );
  • str需要被切割的字符串的首地址,如果是第一次被切割则为字符串的首地址,如果不是第一次则是NULL空地址(函数会在切割后保留切割符出现的地址)。
  •  delimiters是分隔符/切割符,可以是单个分割符的地址,也可以是分割符集合(字符串)的首地址。

函数返回值:

        如果存在分隔符,则函数返回切割后字符的首地址,如果不存在,则返回空指针NULL。

函数的使用:

  • 此函数在切割个同意字符串时,第一次使用时,需要传字符串的地址,在这之后则不需要传地址了,函数在每一次切割后都会记住分隔符出现的位置,下次调用时只需传空指针NULL,函数就会根据记忆的地址向后切割。
  • 函数再切割之后会在切割符处换上'\0',然后返回字符串的起始地址。
  • 函数在切割时会对字符串进行操作,为避免对原字符串进行操作,在操作前拷贝一份,来进行操作。

3.strerror函数

函数作用:

  • 在不同的操作系统和C语言标准库中会规定一些错误码,一般都是放在errno.h这个头文件中说明。
  • 在程序运行时,会生成变量errno来记录程序出现错误时的错误码,在程序启动时为0,当调用库函数出现错误时就会将对应的错误码放在errno中,而错误码不能表示错误信息,这时候就需要strerror函数。
  • 函数通过错误码把错误信息字符串的首地址返回出来。

例子:

通过错误码返回的字符指针进行打印错误信息

函数定义:

char * strerror ( int errnum );
  • errnum错误码
  • char* 错误码对应的错误信息的字符串的地址

perror函数:

 perror函数使用打印错误信息,函数参数为错误信息的首地址,返回为空,一般设为满足错误条件时就会调用perror函数打印,那么起始perror函数就是printf函数+strerror函数。


本章内容结束,下章见,拜拜!!!

这篇关于C语言字符串函数strstr、strtok和strerror的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数

python中的高阶函数示例详解

《python中的高阶函数示例详解》在Python中,高阶函数是指接受函数作为参数或返回函数作为结果的函数,下面:本文主要介绍python中高阶函数的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录1.定义2.map函数3.filter函数4.reduce函数5.sorted函数6.自定义高阶函数

Python 常用数据类型详解之字符串、列表、字典操作方法

《Python常用数据类型详解之字符串、列表、字典操作方法》在Python中,字符串、列表和字典是最常用的数据类型,它们在数据处理、程序设计和算法实现中扮演着重要角色,接下来通过本文给大家介绍这三种... 目录一、字符串(String)(一)创建字符串(二)字符串操作1. 字符串连接2. 字符串重复3. 字

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc

Python中的sort方法、sorted函数与lambda表达式及用法详解

《Python中的sort方法、sorted函数与lambda表达式及用法详解》文章对比了Python中list.sort()与sorted()函数的区别,指出sort()原地排序返回None,sor... 目录1. sort()方法1.1 sort()方法1.2 基本语法和参数A. reverse参数B.

python语言中的常用容器(集合)示例详解

《python语言中的常用容器(集合)示例详解》Python集合是一种无序且不重复的数据容器,它可以存储任意类型的对象,包括数字、字符串、元组等,下面:本文主要介绍python语言中常用容器(集合... 目录1.核心内置容器1. 列表2. 元组3. 集合4. 冻结集合5. 字典2.collections模块

Java 字符串操作之contains 和 substring 方法最佳实践与常见问题

《Java字符串操作之contains和substring方法最佳实践与常见问题》本文给大家详细介绍Java字符串操作之contains和substring方法最佳实践与常见问题,本文结合实例... 目录一、contains 方法详解1. 方法定义与语法2. 底层实现原理3. 使用示例4. 注意事项二、su