首页 > 软件 > 匹配字符串求子串在主串出现的的首位置

匹配字符串求子串在主串出现的的首位置

软件 2022-12-18

在某字符串中查找子字符串第一次出现的位置

字符串中的位置用0,1,2,3...表示 如该字符串不包含子串则返回 -1, 包含返回 位置 #include "stdio.h" int f(char *s, char *a) { int ls,la,i; int flag = -1; ls = strlen(s); la = strlen(a); if (la > ls) return -1; for (i=0;i<=ls-la;i++){ if (strncmp(s+i,a,la)==0) return i; } return flag; }; void main() { char s[]="abcd1234xyz"; char a[]

题目描述 求子串在主串中首次匹配的位置。串长<=300000。 输入 先输入一行主串,然后输入一行

#include
#include
usingnamespacestd;
intmain(){
stringmain_string,sub_string;
while(getline(cin,main_string)&&getline(cin,sub_string)){
string::size_typeconstpos=main_string.find(sub_string,0);
if(pos==main_string.npos){
cout<<"No\n";
}
else{
cout<}
}
return0;
}

子串定位 将子串在母串中第一次出现的位置找出来。

我写了一下那个找字串位置的函数,具体的流程你自己写写,要是有问题再追问吧! #include #include #include int SubString(char *sub, char *src, int pos, int len) { int i; if(pos < 0 || len < 1) return 0; for(i=0; iC语言编程:从键盘输入一个字符串,查找指定子串第一次出现的位置。求问题补充里的程序

原理类似于找素数,以下是具体代码(附注释):

#include
#include
#include
intSearchString(chars[],chard[]);
main()
{
chars[81];//储存一串字符
chard[10];//储存要查找的字符
intflag;
//输入一串字符
printf("Inputastring:");
gets(s);
//输入想要查找的字符
printf("Inputanotherstring:");
gets(d);
//调用函数,输出结果
flag=SearchString(s,d);
if(flag==-1)
printf("Notfound!\n");
else
printf("Searchingresults:%d\n",flag);
system("pause");
}
//函数功能:在字符数组s中查找子串d,返回d在s中首次出现的位置,若找不到,则返回-1
intSearchString(chars[],chard[])
{
intlocation=-1;
inti,j;
//第一层循环遍历被查找字符串
for(i=0;s[i]!='\0';i++)
{
//第二层循环遍历要查找的字符,若有不同的字符则退出该循环
for(j=0;d[j]!='\0';j++)
{
if(s[i+j]!=d[j])
break;
}
//判断第二层循环是否全部执行,若全部执行则表示字符相等,保存位置
if(d[j]=='\0')
{
location=i+1;
break;
}
}
returnlocation;
}

一个子串在包含它的主串中的位置是指子串的最后那个字符在主串中首次出现的位

不是,是它的第一个字符在主串中出现的位置。

比如,主串字符为:management,子串字符为age,那么位置就是3,因为字符串第一位为0,接下来依次为1,2,3……在这个题目中,m就是第0位,a是第1位,n是第2位,a是第3位……


标签:编程语言 字符串 收藏 信息技术 文玩

大明白知识网 Copyright © 2020-2022 www.wangpan131.com. Some Rights Reserved. 京ICP备11019930号-18