指针数组函数结合,判断两个字符串是否存在包含关系

这道题是在写作业的时候遇到的,当然,对于很多大神来说肯定很简单,但是对于像我一样的初学者和菜鸟小白来说,这道题一开始真的是难到,选择记录下来纯粹是让自己理解的更深刻些,我写的时候也是在百度上搜索了下的,所以代码并不完全是我自己写的,让自己在理解一些这种算法是一方面,还有就是给后生一条出路,有必要的时候参考下,毕竟我们小白一路走过来也很辛苦,虽然大神也都是经历过这段日子!

PS:(下面的程序是我用C写的)

 

 

这道题原题是:

有两个字符串s1,s2,判断s2是否包含在s1中,函数返回s2在s1中的起始地址;否则返回0.

要求是编写函数 char* strin(char *s1,char *s2);

 

 

源程序如下:

#include<stdio.h>
#include<string.h>
char* strin(char* s1, char* s2);  
void main()
{
	char s1[1024] = "Mom and Day, I love you!";  //首先我先初始化两个字符串
	char s2[1024] = "I love you!";
	char* p = strin(s1, s2);
	char* IndexS2 = strin(s1, s2);
	printf("%x\n", IndexS2);
}
char* strin(char* s1, char* s2)  //判断s2是否包含于s1
{
	int i = 0;
	int j = 0;  //i是s1位置,j是s2位置
	int len1 = strlen(s1);
	int len2 = strlen(s2);
	if (len2 > len1)
	{
		printf("-1\n");
	}
	while (i < len1 - len2 + 1)
	{
		while (j < len2&&s2[j] == s1[i])
		{
			++i;
			++j;
		}
		if (j == len2)
		{
			return(&s1[i - len2]);
		}
		else
		{
			i = i - j + 1;
			j = 0;
		}
	}
	return NULL;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值