/*字符串中子串出现的次数*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 100
//函数声明
int number(char *,char *);
void main()
{
char *s;
char *son;
int num;
s=(char *)malloc(sizeof(char)*N);
son=(char *)malloc(sizeof(char)*N);
printf("请输入字符串:\n");
gets(s);
printf("请输入子串:\n");
gets(son);
while(strlen(son)>strlen(s))
{
system("cls");
printf("输入错误!请重新输入!\n");
printf("请输入字符串:\n");
gets(s);
printf("请输入子串:\n");
gets(son);
if(strlen(son)<=strlen(s))
{
break;
}
}
num=number(s,son);
printf("字符串中子串出现的次数为:%d\n",num);
}
int number(char *s,char *son)
{
int s_length=strlen(s);
int son_length=strlen(son);
int i,j,k;
int num=0;
for(i=0;s[i]!='\0';i++)
{
if(strncmp(s+i,son,son_length)==0)
{
num++;
}
if(i==s_length)
{
printf("%s不是%s的子串\n",son,s);
}
}
if(num!=0)
{
return num;
}
}
运行结果: