首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

帮忙看下这段代码哪错了,该如何解决

2012-03-20 
帮忙看下这段代码哪错了这是我写了统计子串在主串中出现的次数如在aaaa中查找aa,我要程序返回出现3次,

帮忙看下这段代码哪错了
这是我写了统计子串在主串中出现的次数
如在"aaaa"中查找"aa",我要程序返回出现3次,
可是为何返回的是0,哪里出错了,一直想不明白,
求高手帮看,别给我其他的写法,最好就在我写的上面改。

C/C++ code
#include <cstring>#include <iostream>using namespace std;int find(char *str,char *s) {    int i,k=0;     for(;*str;str++)     {        char *str1=new char[strlen(s)];        for(i=0;i<strlen(s);i++)            *(str1+i)=*(str+i);        if(!strcmp(str1,s))            k++;         delete str1;    }    return k;}int main(){    int c=find("aaaa","aa");    cout<<c<<endl;    return 0;}


[解决办法]
不好意思,上面的问题主观化了,有些错误,首先道歉,主要是1错误我说的不对,
确实应该是加!的
而参考楼上的大哥,串尾确应该+串结束符'\0'的;
又改了下
#include <cstring>
#include <iostream>
using namespace std;

int find(char *str,char *s) 
{
int i,k=0; 
for(;*(str+strlen(s)-1);str++) 
{
char*str1=new char[strlen(s)+1];
int aaa = strlen(s);
for(i=0;i<strlen(s);i++)
*(str1+i)=*(str+i);
*(str1+i) = '\0';
int xxxx = strcmp(str1,s);
if(!strcmp(str1,s))
k++; 
delete str1;
}
return k;
}

int main()
{
int c=find("aaaa","aa");
cout<<c<<endl;
return 0;
}

热点排行