c语言模拟实现strstr函数

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

strstr()是string.h库里的一个函数,它的效果是传两个字符串地址,在第一个字符串中找第二个字符串。如果存在返回存在第一个字符串中关于第二个字符串的首地址。如果不存在,就返回空指针。

首先需要定义三个指针,s1,s2,p。因为两个字符串不能改变,需要重新定义三个指针来实现,当找到一半或者找到其中几个字符时,需要一个p指针来记录第一个字符串中开始比较的起始位置,下一次遍历时,将p+1赋给s1再一次进行对比,直到全部遍历完第一个字符串,亦或者找到了子字符串。找到时,此时s2指向\0,只需加一个条件,直接结束循环,直接返回p的地址就是所查找子字符串在第一个字符串的起始位置。

代码实现如下:文章来源地址https://www.toymoban.com/news/detail-728303.html

#include <stdio.h>
#include <string.h>
#include <assert.h>

char* my_strstr(const char* str1, const char* str2) {
	assert(str1 && str2);
	const char* s1 = str1;
	const char* s2 = str2;
	const char* p = str1;
	while (*p) {
		s1 = p;
		s2 = str2;
		while(*s2!='\0'&&*s1!='\0' &&* s1 == *s2) {
			 s1++;
			 s2++;
		}
		if (*s2 == '\0') {
			return p;
		}
		p++;
	}
	return NULL;

}
int main() {
	char arr1[] = "abbbcdef";
	char arr2[] = "bcd";
	char*ret=my_strstr(arr1, arr2);

	if (ret == NULL) {
		printf("没找到\n");
	}
	else {
		printf("%s\n", ret);
	}
	return 0;
}

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

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

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

相关文章

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

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

    2024年01月17日
    浏览(64)
  • C语言sscanf,strstr和strtok函数用于字符提取分割

    sscanf函数(提取字符): 从输入字符串的左边开始往右匹配,遇到不符合匹配规则时则结束匹配。注意是遇到不符合描述规则时就结束,而不是从整个字符串中提取出符合规则的部分。 字符串格式描述说明: 代码示例: \\\"%04d%02d%02d\\\"是用来解析字符串的格式,%表示格式转换的

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

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

    2024年02月12日
    浏览(45)
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】

    欢迎来CILMY23的博客喔,本期系列为​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】,图文讲解各种字符串函数,带大家更深刻理解C语言中各种字符串函数的应用,感谢观看,支持的可以给个赞哇。  前言 上一篇说到,有不受长度限

    2024年02月22日
    浏览(53)
  • 【C语言】轻松模拟实现qsort函数

    君兮_的个人主页 勤时当勉励 岁月不待人 C/C++ 游戏开发 Hello,米娜桑们,这里是君兮_,我们今天接着上回更新的内容,讲讲我们如何模拟实现自己的qsort函数, 废话不多说,我们开始今天的内容。 关于这方面的内容已经在上篇博客中具体介绍了,这里不再缀叙,感兴趣的话可

    2024年02月16日
    浏览(32)
  • C语言--模拟实现库函数strcpy

    本章内容我们将通过相关函数来实现库函数中的strcpy。 C语言 strcpy()函数用于对字符串进行复制(拷贝)。需要的头文件为 string.h 。原理如下 其中的strSource为 源字符串 ,strDestination为 目的字符串 ,strcpy的作用就是将 strSource 指向的字符串复制到 strDestination。 我们举个例子 打

    2024年01月19日
    浏览(38)
  • C语言字串函数、内存函数介绍以及模拟实现

        目录 前言 本期内容介绍: 一、字符串函数 strlen介绍 strlen 模拟实现(三种方式) 方法一:计数器法  方法二:递归法(不创建临时变量法) 方法三:指针-指针 strcpy介绍 strcpy模拟实现 ​编辑strcmp介绍 strcmp模拟实现 strcat介绍 strcat模拟实现 strncpy介绍 strncpy模拟实现 s

    2024年02月14日
    浏览(36)
  • 高阶C语言|字符函数和字符串函数--函数的模拟实现

    C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在 常量字符串 中或者 字符数组 中。 字符串常量 适用于那些对它不做修改的字符串函数 size_t代表strlen函数返回的是一个无符号整形,str指向的是字符串,接收字符串的地址 字符串已

    2024年02月16日
    浏览(68)
  • 『C语言进阶』qsort函数及模拟实现

    🔥 博客主页 : 小羊失眠啦 🔖 系列专栏 : C语言 🌥️ 每日语录 : 没有退路,只能让自己变得强大 ❤️ 感谢大家点赞👍收藏⭐评论✍️ 在上篇指针进阶中,我们对函数指针、函数指针数组、函数指针数组指针以及回调函数有了一定的了解,文章末尾简单的对qsort函数进

    2024年02月07日
    浏览(40)
  • 【C语言】回调函数(qsort)与模拟实现

    何思何虑,居心当如止水;勿取勿忘,为学当如流水。— 出自《格言联璧·学问类》 解释:无思无虑,心境应当平静如水;不求冒进也不忘记,学业当如流水一般永无止境。 这篇博客我们将会理解回调函数这个概念,以及借用qsort帮助理解,并且最终用qsort的思路来实现冒泡

    2024年02月16日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包