两种方法
第一种
//字符串出现次数
#include <stdio.h>
#include <string.h>
int get_count(char * src,char * dst);
int main()
{
char str1[100];
char str2[100];
int count;
printf("str1:");
gets(str1);
printf("str2:");
gets(str2);
count=get_count(str1,str2);
printf("count is %d\n",count);
return 0;
}
int get_count(char * src,char * dst)
{
int i=0,j=0;
int num0=0,num1=0;
int len=strlen(dst);
while(src[i]!='\0')
{
while((dst[j]!=0)&&(dst[j]==src[i+j]))
/*这里加上dst[j]!=0是为了应对主串为abab子串为ab的情况,
也就是比较完成后两个字符串都到达末尾的情况*/
{
j++;
}
if(dst[j]==0)
{
i+=len;
j=0;
num0++;
if(src[i]=='\0')/*这种情况是为了应对主串为abab子串为ab的情况,也就是比较完成后两个字符串都到达末尾的情况*/
{
if(num0>num1)
num1=num0;
}
}
else
{
if(num0>num1)
{
num1=num0;
}
num0=0;
i++;
j=0;
}
}
return num1;
}
第二种
//子串出现次数
#include <stdio.h>
int subString(char *pStr, char *pSub)
{
int number = 0;
char *p;
char *q;
while(*pStr != '\0')
{
p = pStr;
q = pSub;
while((*p == *q)&&(*p!='\0')&&(*q!='\0'))
{
p++;
q++;
}
if(*q=='\0')
{
number++;
}
pStr++;
}
return number;
}
int main()
{
char str1[50], str2[20];
int sum=0;
printf("Please enter str1\n");
scanf("%s",str1);
printf("Please enter str2 \n");
scanf("%s",str2);
sum= subString(str1,str2);
printf("%d\n", sum);
return 0;
}