| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 405 人关注过本帖
标题:[求助]出问题了,求解
只看楼主 加入收藏
chenkuanyi
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-4-21
收藏
 问题点数:0 回复次数:5 
[求助]出问题了,求解

这是一个在源字符串中查找目标字符串的程序
但查找函数出问题了:
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编辑过]

搜索更多相关主题的帖子: 求解 
2007-04-22 09:14
jqbbccn
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2006-10-17
收藏
得分:0 
下标从0开始,len要-1吧!

2007-04-22 09:24
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
int find(char S[],char T[])
{
int len1=strlen(S),len2=strlen(T);
for(int i=0,j=0;i<len1&&j<len2;i++)
{
if(S[i]!=T[j])
{
if(j!=0)
{
i--;
j=0;
}
}
else j++;
if(j==len2)
return i+1-len2;
}
return -1;
}

[此贴子已经被作者于2007-4-22 9:40:36编辑过]


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-04-22 09:38
chenkuanyi
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-4-21
收藏
得分:0 

版主的答复很好,但我有点小问题:
if(j!=0)
{
i--;
j=0;
}
这里觉得i应回来起始执行处,而不是简单的i--

在有些情况下会出现错误:

输入源字符串:
aaaaafsdjf
输入目标字符串:
aaaaf
没有目标字符串:

在这里要注意a 的个数.

[此贴子已经被作者于2007-4-22 11:12:07编辑过]

2007-04-22 10:58
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
不好意思,逻辑错误了,改一下>
if(S[i]!=T[j])
{
i-=j;
j=0;
}

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-04-22 12:49
chenkuanyi
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-4-21
收藏
得分:0 

在这里向版主的学识和精神致敬!!!

哈哈哈

2007-04-22 13:02
快速回复:[求助]出问题了,求解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018744 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved