![]() |
#2
pauljames2013-09-10 07:33
|
判断一个字符串(dst)是否是另一个字符串(src)的子串;
输出子串在母串中的第一次出现的起始位置;
匹配的时候不区分大小写;
不能使用库函数(使用库函数按0分计算);
要求实现函数:
unsigned int str_str(char * src, char *dst);
返回:如果dst是src的子串 则返回起始位置 如果不是 则返回0
输入:src 指向母串的指针; dst 指向子串的指针
示例
src->akrsd5859 dst->rsd
则返回3
src->Rstsawerst36ds dst->rst
则返回8
src->dfsge dst-> dfsgesa
则返回0

#include<iostream>
//#include<assert>
using namespace std;
int result=0;
unsigned int str_str(char *src,char *dst)//判断一个字符串是否是另一个字符串的子串,输出子串在母串中第一次出现的位置
{char *pa=src; //匹配时不区分大小写
char *pb=dst;
int M=strlen(src);
int N=strlen(dst);
int count=0;
for(int i=0;i<M;i++)
{ if(*pb==' ')
{count=i+2-N;
return count;
break;
}
if(*pa==*pb||*pa==*pb+32||*pa==*pb-32)
{pa++;
pb++;
}
else{pa++;
pb=dst;
}
}
}
//主函数
int main()
{char src[]="akrsd5859";
char dst[]="rsd";
result=str_str(src,dst);
cout<<"result="<<result<<endl;
}
//#include<assert>
using namespace std;
int result=0;
unsigned int str_str(char *src,char *dst)//判断一个字符串是否是另一个字符串的子串,输出子串在母串中第一次出现的位置
{char *pa=src; //匹配时不区分大小写
char *pb=dst;
int M=strlen(src);
int N=strlen(dst);
int count=0;
for(int i=0;i<M;i++)
{ if(*pb==' ')
{count=i+2-N;
return count;
break;
}
if(*pa==*pb||*pa==*pb+32||*pa==*pb-32)
{pa++;
pb++;
}
else{pa++;
pb=dst;
}
}
}
//主函数
int main()
{char src[]="akrsd5859";
char dst[]="rsd";
result=str_str(src,dst);
cout<<"result="<<result<<endl;
}
这是我写的代码,可是结果根本不对,想问问大家程序哪里出了问题