// C语言子字符串次数统计函数
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <string.h>
// 之所以带一个nMaxLen参数,可以避免指针越界,通过判断最后一个字符是否为'/0'不一定准确
int CountSubString(const char* szStr, const char* szSubStr, int nMaxLen);
int main(int argc, char* argv[])
{
char* szStr = "<str>This is test string</str><str>test2</str><str>test3</str>";
int nNum = 0;
nNum = CountSubString(szStr, "</str>", strlen(szStr));
printf("%d/r/n", nNum);
return 0;
}
int CountSubString(const char* szStr, const char* szSubStr, int nMaxLen)
{
int nSubStrLen = 0;
int nRet = 0;
int nIndex = 0;
const char* tmp;
if (NULL == szStr || szStr == szSubStr)
return nRet;
nSubStrLen = strlen(szSubStr);
tmp = szStr;
while (szStr != '/0' && nIndex < nMaxLen)
{
if (strncmp(tmp, szSubStr, nSubStrLen) == 0)
{
nRet++;
tmp += nSubStrLen;
nIndex += nSubStrLen;
}
else
{
tmp += 1;
nIndex += 1;
}
}
return nRet;
}