求子字符串在父字符串中出现的次数
自己编制了以下一个小程序,挺简单的,但是自己却被搞糊涂了,所以只能向各位来请教,希望大家给予意见,多多益善我想要的成功程序是:打印出子字符串在父字符串中出现的次数。如:输入 wo shi zhongguoren!ni ye shi!(父串) shi(字串),回车后就能输出2!程序的运行结果有错误,我知道下面的一段处理过程中可能错了,
for(i=0;i<ls;i++)
{
if(*(p+i)==q[0])
{
for(t=1;t<lc;t++)
if(*(p+i+t)==*(q+t))
++k;
}
}
希望大家能帮我指出来,谢谢!程序的运行结果如附图
1.zip
(4.77 KB)
所示。父串为yingmingjun,当我输入字串in时,结果是正确的,但是输入ing时,结果却翻倍了变成4。完整的源代码如下:
#include "stdio.h"
#include "string.h"
int tongji(char *p,char *q)
{
int i,k=0,t,ls,lc;
ls=strlen(p);
lc=strlen(q);
for(i=0;i<ls;i++)
{
if(*(p+i)==q[0])
{
for(t=1;t<lc;t++)
if(*(p+i+t)==*(q+t))
++k;
}
}
return k;
}
void main()
{
char str[100],c[100];
printf("请输入字符串和比较字符:\n");
gets(str);
gets(c);
if(strlen(str)<strlen(c))printf("被比较的字符串长度小于比较字符串!操作无法进行!\n");
else
puts("\n");
printf("父字符串的长度是%d\n",strlen(str));
printf("\n字符串%s在父字符串中出现的次数为%d\n",c,tongji(str,c));
}