帮忙看下这段代码哪错了
这是我写了统计子串在主串中出现的次数
如在"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;
}