这个博客的作用是介绍从一大串字符中找出特定的字符串出现了多少次,有两种模型,一个是do-while模型,一个是while模型。
主要使用了<string.h>中的一个函数
**char *strstr(const char haystack,const char needle);
它的作用是从第一个字符串(haystack)中找出第二个字符串(needle)出现的位置,将位置的指针返回。
do-while 模型
下面的程序是从"13abcd8464dfa64abcd45464abcddfdasafabcd464"中统计"abcd"出现的次数
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char *p = "13abcd8464dfa64abcd45464abcddfdasafabcd464";
int n = 0;
do {
p = strstr(p,"abcd");
if (p != NULL)
{
n++;//累计个数
//重新设置查找的起点
p = p + strlen("abcd");
}
else//若没有匹配的字符串,跳出循环
{
break;
}
} while (*p != NULL);//如果没到结尾就继续
printf("n = %d\n",n);
system("pause");
return 0;
}
while模型
下面的程序与上面的功能意义,不同的是它的写法
int main(void)
{
char *p = "13abcd8464dfa64abcd45464abcddfdasafabcd464";
int n = 0;
while((p = strstr(p,"abcd")) != NULL)
{//能进来肯定有匹配的子串
//重新设置起点位置
p = p + strlen("abcd");
n++;
if (*p == 0)//如果到结束符,跳出
{
break;
}
}
//输出结果
printf("n = %d\n", n);
system("pause");
return 0;
}