C语言strstr函数_strstr函数c语言实现

C语言strstr函数_strstr函数c语言实现C语言strstr函数查找字符串的函数,语法规则char*strstr(constchar*string,constchar*strCharSet)用于查找字符串strCharSet是否为字符串string的子字符串,需要引用头文件#include<string.h>使用方法如下:intmain(){ chararr1[]=”Thisisanexercise”; chararr2[]=”anexercise”; char*ret1


Jetbrains全系列IDE稳定放心使用

C语言strstr函数

查找字符串的函数,语法规则char *strstr( const char *string, const char *strCharSet )用于查找字符串strCharSet是否为字符串string的子字符串,需要引用头文件#include <string.h>

使用方法如下:

int main()
{
	char arr1[] = "This is an exercise";
	char arr2[] = "an exercise";
	char* ret1 = strstr(arr1, arr2);
	if (ret1 == NULL)
	{
		printf("找不到!");
	}
	else
	{
		printf("%s\n", ret1);
	}
    return 0;
}

创建一个my_strstr函数模拟实现查找字符串功能

定义两个字符arr3和arr4,用一个char*类型指针ret2接受my_strstr函数的返回值并判断

int main()
{
    char arr3[] = "abbbcdef";
	char arr4[] = "bbc";
	char* ret2 = my_strstr(arr3, arr4);
	if (ret2 == NULL)
	{
		printf("找不到!");
	}
	else
	{
		printf("%s\n", ret2);
	}
	return 0;
}

接下来写my_strstr函数,断言str1&&str2不为空,并且创建指针cp、s1和s2,cp指针指向str1,s1指向cp,根据strstr函数都功能,首先s1指向‘a’,s2指向‘b’

C语言strstr函数_strstr函数c语言实现

 

如果s1与s2不相等,cp++,也就是cp指向‘b’,s1指向cp。 

C语言strstr函数_strstr函数c语言实现

这时再次进行循环对比s1和s2是否相同 ,但是当s2指向‘c’时,s1指向‘b’,此时s1与s2不相等,退出循环,cp++,重新进行循环。

具体代码:

char* my_strstr(const char* str1, const char* str2)
{
	assert(str1 && str2);
	char* s1;
	char* s2;
	char* cp = str1;
	while (*cp)
	{
		s1 = cp;
		s2 = str2;
		while (*s1 && *s2 && *s1 == *s2)
		{
			s1++;
			s2++;
		}
		if (*s2 == '\0')
		{
			return cp;
		}
		cp++;
	}
	return cp;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/181711.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux查找文件夹命令find_用shell命令查看目录下的文件

    linux查找文件夹命令find_用shell命令查看目录下的文件liunx查找大于100M的文件find/-typef-size+100Mliunx查找文件夹命令:linux查找根目录下文件夹名称叫www.buruyouni.com的目录地址find/-namewww.buruyouni.com-d1linux查找/var/www/目录下叫index.php的文件find/var/www/-nameindex.php1查找根目录下所有以”.sh”结尾的文件find/-name*.sh

    2022年10月29日
  • mysql和redis的区别

    mysql和redis的区别1.mysql和redis的数据库类型mysql是关系型数据库,主要用于存放持久化数据,将数据存储在硬盘中,读取速度较慢。redis是NOSQL,即非关系型数据库,也是缓存数据库,即将数据存储在缓存中,缓存的读取速度快,能够大大的提高运行效率,但是保存时间有限2.mysql的运行机制mysql作为持久化存储的关系型数据库,相对薄弱的地方在于每次请求访问数据库时,都存在着I/O操作,如果反复…

    2022年6月14日
  • curl 的用法指南「建议收藏」

    curl 的用法指南「建议收藏」curl 的用法指南

    2022年4月23日
  • settings官方网站_phpstorm中文

    settings官方网站_phpstorm中文setting —> php,选择php版本,并点击…,选择到php.exe进入到appserv底下找到php.ini文件,查找date.timezone,去掉前面的;号,添加”Asia/Shanghai”重启appserv环境,就是重启下apache 和 mysql服务发现依然失败后面重启电脑就可以了哈哈哈哈哈哈哈哈…

    2022年8月18日
  • 生活娱乐 最炫名族风恶搞版大全

    生活娱乐 最炫名族风恶搞版大全http://huodong.5sing.com/Content/256100/《最炫民族风》恶搞填词翻唱,再起狂潮!"苍茫的天涯是我的爱,绵绵的青山脚下花正开,什么样的节奏是最呀最摇摆

    2022年7月3日
  • linux详解sudoers

    linux详解sudoers文章目录sudo使用sudo命令执行过程赋予用户sudo操作的权限/etc/sudoers内容详解编辑/etc/sudoers命令作用域通配符以及取消命令输入密码时有反馈修改sudo会话时间实践sudoers文件详解sudo使用Linux是多用户多任务的操作系统,共享该系统的用户往往不只一个。出于安全性考虑,有必要通过useradd创建一些非root用户,只让它们拥有不完全的权限;如有…

    2022年6月20日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号