(C语言)判定一个字符串是否是另一个字符串的子串,若是则返回子串在主串中的位置。

要求:

(1)在主函数中输入两个字符串,调用子函数cmpsubstr()判断,并在主函数输出结果。

(2)子函数的返回值为-1表示未找到,否则返回子串的位置(起始下标)。

cpp 复制代码
#include<stdio.h>
#include<string.h>
int cmpsubstr(char *str1,char *str2)
{
	int i = 0 ,j = 0;
	int n1 = strlen(str1),n2 = strlen(str2);
	if(n1 >= n2)
	{
		while(i < n1 && j < n2)
		{
			if(str1[i] == str2[j])
			{
				++i;
				++j;
			}
			else
			{
				i = i-j+1;
				j = 0;//回溯 
			}
		}
		if(j >= n2)
			return i-n2+1;
		else
			return -1; 
	}
	else
	{
		while(i < n1 && j < n2)
		{
			if(str1[i] == str2[j])
			{
				++i;
				++j;
			}
			else
			{
				j = j-i+1;
				i = 0;
			}
		}
		if(i >= n1)
			return j-n1+1;
		else
			return -1;
	}
 }
 int main()
 {
 	char str1[100],str2[100];
 	int flag=0;
 	scanf("%s %s",&str1,&str2);
 	flag = cmpsubstr(str1,str2);
 	if(flag == -1)
 		printf("没有找到匹配子串\n");
 	else
 		printf("找到子串,开始位置为%d",flag);
 	return 0;
  } 

运行截图:

注:侵权可删

相关推荐
FF在路上18 分钟前
Knife4j调试实体类传参扁平化模式修改:default-flat-param-object: true
java·开发语言
余额不足121381 小时前
C语言基础十六:枚举、c语言中文件的读写操作
linux·c语言·算法
众拾达人1 小时前
Android自动化测试实战 Java篇 主流工具 框架 脚本
android·java·开发语言
皓木.1 小时前
Mybatis-Plus
java·开发语言
不良人天码星1 小时前
lombok插件不生效
java·开发语言·intellij-idea
源码哥_博纳软云1 小时前
JAVA同城服务场馆门店预约系统支持H5小程序APP源码
java·开发语言·微信小程序·小程序·微信公众平台
学会沉淀。1 小时前
Docker学习
java·开发语言·学习
西猫雷婶2 小时前
python学opencv|读取图像(二十一)使用cv2.circle()绘制圆形进阶
开发语言·python·opencv
kiiila2 小时前
【Qt】对象树(生命周期管理)和字符集(cout打印乱码问题)
开发语言·qt
罗伯特祥2 小时前
C调用gnuplot绘图的方法
c语言·plot