C 语言字符串模型 ( strstr-while 模型 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C 语言字符串模型 ( strstr-while 模型 )相关的知识,希望对你有一定的参考价值。

前言

字符串开发模型 :

  • strstr-while/do…while 模型 : 在 字符串 中 查找 子串特征 ;

  • 两头堵模型 : 两个指针变量 , 一个指向首部 , 一个指向尾部 , 进行 翻转 , 逆序 等操作 ;

  • 字符串翻转模型 : 借助 指针 进行翻转 , 或 借助 栈 后进先出的特性 , 进行 翻转 ;





一、strstr-while 模型



将上一篇博客 【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;


执行结果 :

以上是关于C 语言字符串模型 ( strstr-while 模型 )的主要内容,如果未能解决你的问题,请参考以下文章

C 语言字符串模型 ( strstr-do…while 模型 )

C 语言字符串模型 ( 字符串翻转模型 )

C 语言字符串模型 ( 两头堵模型 )

C 语言字符串模型 ( 键值对模型 )

C语言 字符串操作两头堵模型

C 语言字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | 引入线程安全概念 )