前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >【C 语言】字符串模型 ( strstr-do…while 模型 )

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

作者头像
韩曙亮
发布2023-03-29 21:24:41
发布2023-03-29 21:24:41
27000
代码可运行
举报
运行总次数:0
代码可运行

文章目录

前言

字符串开发模型 :

  • strstr-while/do…while 模型 : 在 字符串 中 查找 子串特征 ;
  • 两头堵模型 : 两个指针变量 , 一个指向首部 , 一个指向尾部 , 进行 翻转 , 逆序 等操作 ;
  • 字符串翻转模型 : 借助 指针 进行翻转 , 或 借助 栈 后进先出的特性 , 进行 翻转 ;

一、strstr 函数


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

函数原型 :

代码语言:javascript
代码运行次数:0
复制
#include <stdio.h>
#include <string.h>
extern char *strstr(char *str1, const char *str2);
  • char *str1 参数是 大字符串 ;
  • const char *str2 参数是 小字符串 ;
  • 返回值 : 如果 char *str1 中包含 const char *str2 子串 , 则返回该子串第一次出现的指针地址 , 如果没有 , 则返回 NULL ;

二、子串查找业务场景


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

代码语言:javascript
代码运行次数:0
复制
// 存在如下字符串, 求下面字符串 "abc" 出现次数
char *p = "sdfsdfsdabc4548411abc";

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

三、代码示例


代码示例 :

代码语言:javascript
代码运行次数:0
复制
#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;
}

执行结果 :

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 前言
  • 一、strstr 函数
  • 二、子串查找业务场景
  • 三、代码示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档