C中统计子串个数

来源:百度知道 编辑:UC知道 时间:2024/05/04 05:47:59
编 写 程 序,统 计 给 定 的 字 符 串 array 中 包 含 的 指 定 子 串sub 的 个 数。例 如 统 计“abceifgheiflaideifsh”中 子 串“eif”的个 数 为 3。

要求两个串均由键盘录入。
要求两个串均用字符型数组存放:char array[20], sub[10];

新手,实在想不出什么好算法,自己想了一个将主串分组的办法,执行老出错……

#include <stdio.h>
#include <string.h>
long GetTimes(char *pMain, char *pSub)
{
long times = 0;
long mainLen = strlen(pMain);
long subLen = strlen(pSub);

for(long i = 0; i <= mainLen - subLen; i ++)
{
int flag = 1;
for(long j = 0; j < subLen; j ++)
{
if(pMain[i + j] != pSub[j])
{
flag = 0;
break;
}
}
if(flag)
times ++;
}

return times;
}
int main()
{
//char str[20]="abcabc";
char* str="abceifgheiflaideifsh";//你给的字符串用20个大的数组放不下
char subStr[10]="eif";
printf("出