这是一个在源字符串中查找目标字符串的程序
但查找函数出问题了:
1 当目标字符串位于字源字符串结尾时,查找不了
2 有时也找不到目标字符串
望指教!!!
#include<iostream>
#include<string>
using namespace std;
int find(char S[],char T[]);
const int MAX=256;
int main()
{
char Source[MAX],Target[MAX];
cout<<"输入源字符串:"<<endl;
cin.getline(Source,MAX);
cout<<"输入目标字符串:"<<endl;
cin.getline(Target,MAX);
int intPos=find(Source,Target);
if(intPos>=0)
cout<<"位于源字符串:"<<intPos<<endl;
else
cout <<"没有目标字符串:"<<endl;
return 0;
}
int find(char S[],char T[])
{
int len1=strlen(S),len2=strlen(T);
int n=0;
int j=1;
for(int i=0;i<len1;i++)
{
if(S[i]==T[0])//当源字符串的有与目标字符串的首字符相同的字符时,开始比较字符串
{
n=i+1;
while((S[n]==T[j])&&(n<=len1)&&(j<=len2))
{
n++;
j++;
}
if((j==len2)&&(n<len1))//判断目标字符串是否已比较完
return i;
else
return -1;
}
j=1;
}
}
如下:
输入源字符串:
achena
输入目标字符串:
chen
位于源字符串:1
输入源字符串:
achena
输入目标字符串:
chena
没有目标字符串:
输入源字符串:
adfjaiofjaoijgaoig
输入目标字符串:
jaoijga
没有目标字符串:
[此贴子已经被作者于2007-4-22 9:15:51编辑过]