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

找子串函数

换空依晨 发布于 2014-03-05 10:12, 485 次点击
int index(char a[],char b[])//找子串函数:返回子串首次出现的位置
{
int i,j,temp;
for(i=0;i<len(a)-len(b);i++)//循环查找
{
temp=i;
j=0;
while(j<=len(b)&&a[temp]==b[j])//逐个字符判断是否子串
{
temp++;
j++;
}
if(j==len(b))
 return i;
}
return -1;
}
这样能找到子串吗 ,条件不应该是i<len(a)吗,比如字符a:hello ,b:lo, 要找到他必须是a[3]=b[0]吧  如果条件是i<len(a)-len(b);i最大也是i<len(a)-len(b)=3,达不到a[3]啊,求帮忙
4 回复
#2
rjsp2014-03-05 10:42
你自己试试看就行了呗,若不能找到,就改<为<=

BTW: 你还是换本书吧,竟然定义为 int index(char a[],char b[]),这要不知道什么底限才能写得出?
正确写法应该是 size_t index( const char* a, const char* b )
a. 下标索引范围应该是 size_t / ssize_t,不是 int 范围
b. a 和 b 不需要具有可修改属性
c. const char a[] 更特出a是个数组,而const char* a 更特出a是个字符串。当然,其本质一样。这一点你不赞同也就算了。
#3
换空依晨2014-03-05 10:44
回复 2楼 rjsp
我没什么不赞同的 新手不懂那么多
#4
yuccn2014-03-05 12:31
为什么不用strstr?
int index(char a[],char b[])
{
    char *p = strstr(a,b);
    if (p==NULL) {
        return -1;
    }

    return p - a;
}
#5
fl89622014-03-07 04:52
回复 4楼 yuccn
char *a="abcabc";
wo xiang wen yi xia, wei shen me you de shi hou wo zhe me xie, bian yi jiu neng tong guo, dan shi you de shi hou jiu bu xing?
1