直接看代码:
//求字符串中子字符串出现的次数
//例如:char *p = "abcd1111222abcd333444abcd555666aa"
//求字符串p中"abcd"出现的次数
#include <stdlib.h>
#include <stdio.h>
#include <string.h> //这三个是常规的头文件
int getSubCount(char *p/*in*/,char *sub/*in*/,int *ncount)
{ //这里是函数实现,与主函数分开
if(NULL == p || NULL == sub || NULL == ncount)
{ //这里是数据有效性验证
return -1;
}
char *q = p;
int temCount = 0;
do{
q = strstr(q,sub); //返回sub首次出现在q中的位置。
if(q != NULL)
{
temCount++;
q = q +strlen(sub);
}else{
break;
}
}while( *q != '\0');
*ncount = temCount;
return 0;
}
int main()
{
char *p = (char *)"abcd11abcd2abcd333444abcd555666aa";
//vs默认生成的是const char *,强制转换一下
char* sub = (char*)"abcd";
int ncount = 0;
int ret = 0;
ret = getSubCount(p,sub,&ncount);
if(ret!=0)
{
printf("func getSubCount(char *p/*in*/,char *sub/*in*/,int *ncount) err : %d\n",ret);
return -1; //输出异常
}
printf("ncount = %d\n",ncount);
return 0;
}