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

这篇具有很好参考价值的文章主要介绍了c语言-库函数strstr()、strtok()、strerror()介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

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


一、库函数strstr()

1.1 strstr()介绍

strstr()实现的是查找子字符串。
下面是cplusplus网站关于这个库函数的介绍以及使用。
c语言-库函数strstr()、strtok()、strerror()介绍,c语言进阶,c语言
说明:
参数str1:被扫描的字符串
参数str2:需要查找的子字符串
返回值:
返回值不为NULL,说明在str1存在str2,返回str1第一次出现str2的首字符地址
返回值为NULL,说明str1不存在str2

strstr()的使用:
c语言-库函数strstr()、strtok()、strerror()介绍,c语言进阶,c语言

1.2 strstr()模拟实现

实现思路:

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

c语言-库函数strstr()、strtok()、strerror()介绍,c语言进阶,c语言
代码实现:

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;
}

代码测试:
c语言-库函数strstr()、strtok()、strerror()介绍,c语言进阶,c语言


二、库函数strtok()

2.1 strtok()介绍

strtok()实现的是切割字符串。
下面是cplusplus网站关于这个库函数的介绍以及使用。
c语言-库函数strstr()、strtok()、strerror()介绍,c语言进阶,c语言
c语言-库函数strstr()、strtok()、strerror()介绍,c语言进阶,c语言
说明:

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

strtok()的使用:
c语言-库函数strstr()、strtok()、strerror()介绍,c语言进阶,c语言

切割过程:
c语言-库函数strstr()、strtok()、strerror()介绍,c语言进阶,c语言
思考:
如何保留上一次切割的标记位置?

利用static关键字

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


三、库函数strerror()

3.1 strerror()介绍

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

c语言-库函数strstr()、strtok()、strerror()介绍,c语言进阶,c语言
说明:

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

strerror()的使用:
c语言-库函数strstr()、strtok()、strerror()介绍,c语言进阶,c语言


总结

本篇文章介绍了strstr()、strtok()、strerror()库函数的使用。文章来源地址https://www.toymoban.com/news/detail-798633.html

到了这里,关于c语言-库函数strstr()、strtok()、strerror()介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言 字符串解析strchr/strrchr/strtok//strtok_r函数使用

    在程序中,解析用户输入的参数(命令行参数)是很常见的操作,本文将讲解C语言中常见的一些解析字符串函数使用方法。 1 strchr 1.1 描述 strchr() 用于查找字符串中的一个字符,并返回该字符在字符串中第一次出现的位置。其原型定义在头文件 string.h 中。 char *strchr(const ch

    2024年02月03日
    浏览(39)
  • C语言 strtok字符串分割函数详解

    strtok 函数的作用是比较独特的,可以用来对字符串进行分割,对于我们获取命令或者数据集合后的数据处理是不可或缺的一步。但是详细介绍 strtok 的博文很少,而且linux手册的介绍也比较简单,这边写篇博文记录一下学习到的这个函数的用法。 函数定义如下: 即从字符串

    2024年02月12日
    浏览(43)
  • c语言模拟实现strstr函数

    strstr()是string.h库里的一个函数,它的效果是传两个字符串地址,在第一个字符串中找第二个字符串。如果存在返回存在第一个字符串中关于第二个字符串的首地址。如果不存在,就返回空指针。 首先需要定义三个指针,s1,s2,p。因为两个字符串不能改变,需要重新定义三个指

    2024年02月07日
    浏览(52)
  • C语言中的strtok()函数进行字符串分割

    引言         在处理文本或字符串数据时,我们常常需要将一长串连续的字符按照特定的分隔符分解成一个个独立的子串。C语言中提供了一个非常实用的库函数—— strtok() ,用于实现这一功能。本文将通过一段示例代码详细解析并演示如何使用 strtok() 函数进行字符串分

    2024年01月23日
    浏览(41)
  • [C语言][PTA基础C基础题目集] strtok 函数的理解与应用

    目录 一.strtok函数的解释与说明 ①strtok函数的功能 ②strtok函数的原型 ③strtok函数的返回值 ④细节说明 二.strtok函数的具体使用 ①PTA基础编程题目集---7-26 单词长度 ②解决问题 三.总结 Find the next token in a string.  即查找字符串中的下一个标记. 就是 将一个字符串分割成一系列

    2024年03月15日
    浏览(43)
  • strstr函数详解 看这一篇就够了-C语言(函数讲解、函数实现、使用用法举例、作用、自己实现函数 )

     strstr()函数用于:查找子字符串 目录 函数介绍 用法示例 函数讲解 实现函数  事例展示 函数声明:char *strstr(const char *str1, const char *str2) 头  文  件:#include string.h 返  回  值: 返回值为char * 类型( 返回指向  str1  中第一次出现的  str2  的指针);如果  str2  不是 

    2024年02月13日
    浏览(45)
  • 【C语言】字符串函数strcpy&&strcat&&strcmp&&strstr的使⽤和模拟实现

    🔍个人主页 : @啊森要自信的主页 ✏️ 真正相信奇迹的家伙,本身和奇迹一样了不起啊! 欢迎大家关注🔍点赞👍收藏⭐️留言📝希望看完我的文章对你有小小的帮助,如有错误,可以指出,让我们一起探讨学习交流,一起加油鸭。 记上节,我们学了字符串 strlen 的使用和

    2024年02月05日
    浏览(45)
  • strstr函数,自己实现my_strstr函数

    错误所在: 老是搞不清楚*str和str的区别!!!! *str:指针所指向的值 str:指针本身(的位置) 1.断言中写成*str 2.cp=*str1 3.while(*str1)中写成s2=*str2 4.没有考虑到arr2为空的情况 5.const修饰了str1,那么也会修饰cp,所以return时要强制类型转换char* 思路:s1、s2分别用来标记起始

    2024年02月09日
    浏览(30)
  • 【算法与数据结构】28、LeetCode实现strStr函数

    所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。    思路分析 :首先判断字符串是否合法,然后利用for循环,取出子字符串利用compare函数进行比较。    程序如下 : 复杂度分析: 时间复杂度: O ( n ∗ m ) O(n * m) O ( n ∗ m ) ,假设haystack的长

    2024年02月12日
    浏览(45)
  • 【再识C进阶2(中)】详细介绍指针的进阶——函数指针数组、回调函数、qsort函数

    💓作者简介: 加油,旭杏,目前大二,正在学习 C++ , 数据结构 等👀 💓作者主页:加油,旭杏的主页👀 ⏩本文收录在:再识C进阶的专栏👀 🚚代码仓库:旭日东升 1👀 🌹欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖        在这一篇博客中,我们要认识并理解 函数指

    2024年02月09日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包