文章目录

  • 前言
  • 一、strstr 函数
  • 二、子串查找业务场景
  • 三、代码示例

前言

字符串开发模型 :

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

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

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

一、strstr 函数


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

函数原型 :

#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” 字符串的出现次数 ;

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

令指针指向 字符串 首地址 , 查找后面的 字符串 中是否是 “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" 子串// 如果包含 , 返回子串第一次出现的指针地址// 如果不包含 , 返回 NULLp = strstr(p, "abc");// 包含的情况if(p != NULL){// 子串出现次数 + 1count++;// 跳过当前的 "abc" 子串 , 从后面开始遍历p = p + strlen("abc");}else{// 如果没有找到 "abc" 子串 , 则退出循环换break;}}while(*p != '\0');// 打印子串出现次数printf("count = %d\n", count);// 命令行不要退出system("pause");return 0;
}

执行结果 :

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

  1. C语言字符串相关一级指针内存模型

    C语言字符串相关一级指针内存模型 通过实例探索一级指针内存模型 通过实例探索一级指针内存模型 void main() {char buf[20]= "aaaa";char buf2 ...

  2. 【C 语言】字符串模型 ( 键值对模型 )

    文章目录 一.业务逻辑需求 二.完整代码实现 一.业务逻辑需求 在 C 中实现 键值对 字符串 的 读取 , 解析 , 保存 操作 ; 键值对字符串样式 "key = value" ...

  3. C语言一级指针(char *)易错模型分析

    C语言一级指针char *易错模型分析 char *(字符串)做函数参数出错模型分析 越界 不断修改指针变量的值 你向外面传递什么 重复的错误何时休 char *(字符串)做函数参数出错模型分析 建立 ...

  4. R语言编程学习之函数与模型:VAR与SVAR和爬虫(图)

    R语言编程学习之函数与模型:VAR与SVAR和爬虫(图) SVAR模型与VAR模型在模型设定形式上的区别是,VAR模型只包含变量的滞后项,而SVAR模型还包含了变量的当期项.SVAR模型还可以避免联立 ...

  5. NLP通用模型诞生?一个模型搞定十大自然语言常见任务

    翻译 | 于之涵 编辑 | Leo 出品 | AI科技大本营 (公众号ID:rgznai100) AI科技大本营按:目前的NLP领域有一个问题:即使是再厉害的算法也只能针对特定的任务,比如适用于机器翻 ...

  6. R语言使用rpart包构建决策树模型、使用prune函数进行树的剪枝、交叉验证预防过拟合、plotcp可视化复杂度、rpart.plot包可视化决策树、使用table函数计算混淆矩阵评估分类模型性能

    R语言使用rpart包构建决策树模型.使用prune函数进行树的剪枝.使用10折交叉验证选择预测误差最低的树来预防过拟合.plotcp可视化决策树复杂度.rpart.plot包可视化最终决策树.使用t ...

  7. R语言使用caret包构建gbdt模型(随机梯度提升树、Stochastic Gradient Boosting )构建回归模型、通过method参数指定算法名称

    R语言使用caret包构建gbdt模型(随机梯度提升树.Stochastic Gradient Boosting )构建回归模型.通过method参数指定算法名称 目录

  8. R语言caret包构建机器学习回归模型(regression model)、使用DALEX包进行模型解释分析、特征重要度、偏依赖分析等

    R语言caret包构建机器学习回归模型(regression model).使用DALEX包进行模型解释分析.特征重要度.偏依赖分析等 目录

  9. R语言分类模型:逻辑回归模型LR、决策树DT、推理决策树CDT、随机森林RF、支持向量机SVM、Rattle可视化界面数据挖掘、分类模型评估指标(准确度、敏感度、特异度、PPV、NPV)

    R语言分类模型:逻辑回归模型LR.决策树DT.推理决策树CDT.随机森林RF.支持向量机SVM.Rattle可视化界面数据挖掘.分类模型评估指标(准确度.敏感度.特异度.PPV.NPV) 目录

  10. R语言机器学习Caret包(Caret包是分类和回归训练的简称)、数据划分、数据预处理、模型构建、模型调优、模型评估、多模型对比、模型预测推理

    R语言机器学习Caret包(Caret包是分类和回归训练的简称).数据划分.数据预处理.模型构建.模型调优.模型评估.多模型对比.模型预测推理 目录

最新文章

  1. Could not generate DH keypair 解决方案
  2. 四、数据仓库和Hive环境搭建
  3. Mac OS 的历史
  4. anaconda3对应的python版本_利用SWIG实现Python调用C/C++!速度快就算了,代码量还特少!...
  5. Activiti 多个并发子流程的应用
  6. cookie 原理及应用
  7. matlab中sum(w.),matlab中sum
  8. html获取页面input值,javascript怎么获取input中用户输入的内容?
  9. opencv java教程_详解OpenCV For Java环境搭建与功能演示
  10. macOS 12 内置原生壁纸下载
  11. Hi3518EV200实现H264视频采集的源码及流程详解(不依赖SAMPLE库)
  12. layui图标显示不正常,显示成方块
  13. iphone手机可不可以运行java_如何在不启动Xcode的情况下运行iPhone模拟器?
  14. 关于msn 微软关闭MSN聊天信息超级链接功能
  15. 编程实现幂函数,(指数为整数)
  16. word打开文档很久很慢_Office软件打开速度慢怎么处理?Word打开很慢如何解决?...
  17. kettle用命令行执行ktr和kjb
  18. 放大器的传递函数_运放全差分放大器实现单端与平衡的相互转换
  19. 【刷题】BZOJ 2959 长跑
  20. c语言sht 和ch,普通话指导:z、c、s和zh、ch、sh的分辨

热门文章

  1. js中的hasOwnProperty和isPrototypeOf方法
  2. python学习笔记十五:日期时间处理笔记
  3. Mysql中NUMERIC和DECIMAL类型区别比较
  4. 老板,请给我多点培养【写给老板的一封信】
  5. SQLServer 实现rownum 的功能
  6. 对象存储/编码/解码
  7. Java常用工具类---IP工具类、File文件工具类
  8. JavaWeb学习之Spring框架(一)
  9. 判断鼠标点击在div外时,更改背景图片
  10. 怎样生成分布式情况下的唯一标示?必须包含网卡字段,以便不同机器生成的唯一标示肯定不一样...