此篇文章,主要利用strstr函数进行字符串出现次数的计算。
因为strstr函数返回值为,字符串第一次出现位置的地址。可以利用这一特性,将指针向后移动子串长度,查找后方出现的子串。
eg:
代码
```int my_strstr(char* str, int* count)
{
// 辅助变量
int i = 0;
char* tmp = str;
while (tmp = strstr(tmp, "abcd"))
{
// 能进来,肯定有匹配的子串
// 重新设置查找起点
tmp = tmp + strlen("abcd");
i++;
if (*tmp == 0) // 如果到结束符
{
break;
}
}
*count = i;
return 0;
}
int main(void)
{
char* str = "abcd123abcd543442abcdifa088abcdafdabcd1abcdabcdabcdabcd";
int count = 0;
int ret = 0;
ret = my_strstr(str, &count);
if (ret != 0)
{
return ret;
}
printf("\"abcd\"共出现 %d 次\n", count);
printf("\n");
return 0;
}