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

举报
韩曙亮 发表于 2022/01/12 23:38:09 2022/01/12
【摘要】 文章目录 前言一、strstr 函数二、子串查找业务场景三、代码示例 前言 字符串开发模型 : strstr-while/do…while 模型 : 在 字符串 中 查找 子串特征 ;...

前言

字符串开发模型 :

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

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

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





一、strstr 函数



strstr 函数的作用是在 char *str1 字符串中查找 char *str2 字符串 ;


函数原型 :

#include <stdio.h>
#include <string.h>
extern char *strstr(char *str1, const char *str2);

  
 
  • 1
  • 2
  • 3
  • char *str1 参数是 大字符串 ;

  • const char *str2 参数是 小字符串 ;

  • 返回值 : 如果 char *str1 中包含 const char *str2 子串 , 则返回该子串第一次出现的指针地址 , 如果没有 , 则返回 NULL ;





二、子串查找业务场景



业务场景 : 给定字符串 , 然后在下面的字符串中查找 “abc” 字符串的出现次数 ;

// 存在如下字符串, 求下面字符串 "abc" 出现次数
char *p = "sdfsdfsdabc4548411abc";

  
 
  • 1
  • 2

令指针指向 字符串 首地址 , 查找后面的 字符串 中是否是 “abc” ;





三、代码示例



代码示例 :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>



int main()
{
    // 存在如下字符串, 求下面字符串 "abc" 出现次数
    char *str = "sdfsdfsdabc4548411abc";
    // 记录下 "abc" 子串出现次数
    int count = 0;
    // 使用 p 指针进行遍历
    char *p = str;

    do
    {
        // 查找 p 指针指向的字符串中, 是否包含 "abc" 子串
        // 如果包含 , 返回子串第一次出现的指针地址
        // 如果不包含 , 返回 NULL
        p = strstr(p, "abc");

        // 包含的情况
        if(p != NULL)
        {
            // 子串出现次数 + 1
            count++;
            // 跳过当前的 "abc" 子串 , 从后面开始遍历
            p = p + strlen("abc");
        }
        else
        {
            // 如果没有找到 "abc" 子串 , 则退出循环换
            break;
        }

    }while(*p != '\0');

    // 打印子串出现次数
    printf("count = %d\n", count);


    // 命令行不要退出
    system("pause");
    return 0;
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47

执行结果 :

在这里插入图片描述

文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。

原文链接:hanshuliang.blog.csdn.net/article/details/121502359

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。