字符串开发模型 :
将上一篇博客 【C 语言】字符串模型 ( strstr-do…while 模型 ) 中的 strstr-do…while 模型 修改为 strstr-while 模型 ;
在 while 循环判定条件中 , 执行 strstr 子串查找工作 , 根据查找结果判定是否继续执行循环 ;
代码示例 :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
// 存在如下字符串, 求下面字符串 "abc" 出现次数
char *str = "sdfsdfsdabc4548411abc";
// 记录下 "abc" 子串出现次数
int count = 0;
// 使用 p 指针进行遍历
char *p = str;
// 在循环条件中
// 查找 p 指针指向的字符串中, 是否包含 "abc" 子串
// 如果包含 , 返回子串第一次出现的指针地址 , 非 0 则执行循环体内容
// 如果不包含 , 返回 NULL , 如果没有找到 , 退出循环 , 继续向后执行
while (p = strstr(p, "abc"))
{
// 子串出现次数 + 1
count++;
// 跳过当前的 "abc" 子串 , 从后面开始遍历
p = p + strlen("abc");
// 如果下一个字节是结尾字节 , 直接退出循环
if(*p == '\0')
{
break;
}
}
// 打印子串出现次数
printf("count = %d\n", count);
// 命令行不要退出
system("pause");
return 0;
}
执行结果 :