注册 登录
编程论坛 C++教室

有关子串查找函数的编程,不知道问题出在哪儿~求大神指教~

落雨的季节 发布于 2013-03-05 19:01, 286 次点击
我想编一个函数子串查找函数,作用是查找一个字符(子串)在另一个字符串中第一次出现的位置。(书上就是这样写的,但是在编译时输出始终有问题,总是输出-1)
#include<iostream>
#include<cstring>
using namespace std;
int find_substr(char str[],char sub_str[])  
{
  int len=strlen(str),
  sub_len=strlen(sub_str);
 for(int i=0;i<=len-sub_len;i++)
 {
  int j=0;
  while(j<sub_len&&sub_len==str[i+j])
   j++;
  if(j==sub_len)
   return i;
 }
 return -1;
}
int main()
{
 char a[10]="abcdefgh";
 char sub_a[]="bc";
 
 cout<<find_substr(a,sub_a)<<endl;
 return 0;
}

此时不是应该输出2吗?但实际输出是:-1
出现了什么问题呀?
5 回复
#2
wp2319572013-03-05 20:05
我砸 没看到你 哪里进行了子串的比较呢  思维不对啊
#3
落雨的季节2013-03-05 23:41
回复 2楼 wp231957
不用进行比较呀,就比如在abcdefghjjkllll中找出是否含有bcd子串一样呀~
#4
azzbcc2013-03-05 23:58
要细心,到 第11行找找
#5
qunxingw2013-03-06 09:06
应该有信息提示查错吧

[ 本帖最后由 qunxingw 于 2013-3-6 09:12 编辑 ]
#6
yuccn2013-03-06 12:09
while(j<sub_len&&sub_len==str[i+j])  -> while(j<sub_len&&sub_str[j]==str[i+j])
1