文章目录

  • 一、两头堵模型
  • 二、完整代码示例

一、两头堵模型


两头堵模型 是 有 222 个指针 , 一个指向字符串头部 , 一个指向字符串尾部 ;

  • 头部指针 从左向右 开始遍历 ;
  • 尾部指针 从右向左 开始遍历 ’ ’

业务逻辑 :" sdfsdfsdabc4548411abc " 字符串中 , 找出 前后不为空 的 子串长度 ;

声明两个指针 , 分别指向开始 和 结尾处 ;

    // 存在如下字符串, 求 前后不为空 的 子串长度char *str = "   sdfsdfsdabc4548411abc    ";// 两个字符串索引 , i 是指向头部 , j 指向尾部int i = 0, j = strlen(str) - 1;

左侧的指针从左向右遍历 :

    // 循环条件是 i 指针指向的 位置 为空 则继续循环// 遇到第一个不为空的字符 , 便停止循环// 停止循环时的 i 指向从左侧开始第一个不为空的字符while(isspace(str[i]) && str[i] != '\0'){i++;}

右侧的指针从右向左遍历 :

    // 循环条件是 j 指针指向的 位置 为空 则继续循环// 遇到第一个不为空的字符 , 便停止循环// 停止循环时的 j 指向从右侧开始第一个不为空的字符while(isspace(str[j]) && str[j] != '\0'){j--;}

二、完整代码示例


代码示例 :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>int main()
{// 存在如下字符串, 求非空格子串的长度char *str = "   sdfsdfsdabc4548411abc    ";// 两个字符串索引 , i 是指向头部 , j 指向尾部int i = 0, j = strlen(str) - 1;// 保存非空字符串长度int count = 0;// 循环条件是 i 指针指向的 位置 为空 则继续循环// 遇到第一个不为空的字符 , 便停止循环// 停止循环时的 i 指向从左侧开始第一个不为空的字符while(isspace(str[i]) && str[i] != '\0'){i++;}// 循环条件是 j 指针指向的 位置 为空 则继续循环// 遇到第一个不为空的字符 , 便停止循环// 停止循环时的 j 指向从右侧开始第一个不为空的字符while(isspace(str[j]) && str[j] != '\0'){j--;}// 计算结果count = j - i + 1;// 打印结果printf("count = %d\n", count);// 命令行不要退出system("pause");return 0;
}

执行结果 :

count = 21
请按任意键继续. . .

【C 语言】字符串模型 ( 两头堵模型 )相关推荐

  1. 【C 语言】字符串模型 ( 两头堵模型 | 将 两头堵模型 抽象成业务模块函数 | 形参返回值 | 函数返回值 | 形参指针判空 | 形参返回值操作 )

    文章目录 一.将 两头堵模型 抽象成业务模块函数 二.完整代码示例 一.将 两头堵模型 抽象成业务模块函数 将 两头堵模型 抽象成业务模块函数 相关要点 : 形参返回值 : 函数的返回值 , 一般使用 ...

  2. 两头堵模型取中间字符

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

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

    文章目录 前言 一.strstr 函数 二.子串查找业务场景 三.代码示例 前言 字符串开发模型 : strstr-while/do-while 模型 : 在 字符串 中 查找 子串特征 ; 两头堵模 ...

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

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

  5. 【C 语言】字符串 一级指针 内存模型 ( 指定大小字符数组 | 未指定大小字符数组 | 指向常量字符串的指针 | 指向堆内存的指针 )

    文章目录 一.字符串 一级指针 内存模型 1.指定大小字符数组 2.未指定大小字符数组 3.指向常量字符串的指针 4.指向堆内存的指针 一.字符串 一级指针 内存模型 #include <std ...

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

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

  7. R语言构建回归模型并进行模型诊断(线性关系不满足时)、进行变量变换(Transforming variables)、使用car包中的boxTidwell函数对预测变量进行Box–Tidwell变换

    R语言构建回归模型并进行模型诊断(线性关系不满足时).进行变量变换(Transforming variables).使用car包中的boxTidwell函数对预测变量进行Box–Tidwell变换 目 ...

  8. R语言使用lm构建线性回归模型、并将目标变量对数化(log10)实战:可视化模型预测输出与实际值对比图、可视化模型的残差、模型预测中系统误差的一个例子 、自定义函数计算R方指标和均方根误差RMSE

    R语言使用lm构建线性回归模型.并将目标变量对数化(log10)实战:可视化模型预测输出与实际值对比图.可视化模型的残差.模型预测中系统误差的一个例子 .自定义函数计算R方指标和均方根误差RMSE 目 ...

  9. R语言使用lm构建线性回归模型、并将目标变量对数化实战:可视化模型预测输出与实际值对比图、可视化模型的残差、模型系数(coefficient)、模型总结信息(summary)、残差总结信息

    R语言使用lm构建线性回归模型.并将目标变量对数化(log10)实战:可视化模型预测输出与实际值对比图.可视化模型的残差.模型系数(coefficient).模型总结信息(summary).残差总结信 ...

最新文章

  1. mern技术栈好处?_通过构建运动追踪器应用程序来学习MERN堆栈(MERN教程)
  2. mongodb - 前端form表单数据传输,在保存和清除的数据格式的处理程序的 - 非递归...
  3. 开发人员拟在澳洲建立一座价值5000万美元的BCH科技园
  4. 不该被忽视的CoreJava细节(四)
  5. python legb_理解 Python 的 LEGB.
  6. Java IO(BIO, NIO, AIO) 总结
  7. 【CV学习笔记】色彩空间
  8. Atitit 文件远程传输读写协议 scp http ftp nfs webdav smb D:\Program Files\Git\usr\bin\scp.exe 4.密码安全策略不完善 在
  9. 通过图标来识别网站用户指纹
  10. 毕设项目 - 大数据+爬虫 疫情分析可视化
  11. qsdk53:QCA9531+QCA9887生产无法校准问题分析及解决方案
  12. 怎么给word文档注音_如何给Word文档中的汉字加拼音?一键加拼音超级方便
  13. php求二叉树的深度(1、二叉树就可以递归,因为结构和子结构太相似)(2、谋而后动,算法想清楚,很好过的)...
  14. 鸿蒙三千法则排名,三千法则名称大全_十大最强法则
  15. python计算机器人运动学分析_orocos_kdl学习(二):KDL Tree与机器人运动学
  16. LABVIEW语音识别
  17. 机器人算法工程师入门指南(四)常用技能与如何备战offer
  18. 2022年全国PMP考试地点汇总,你都知道吗?
  19. 嵌入式自动判断是否插入网线的几种方法
  20. 学习笔记1--自动驾驶系统架构

热门文章

  1. 模块全解======ruby的类是单继承生物、所以出现了module、实现了多继承
  2. (转)让你受益终身的10个Word实用技巧
  3. day19_MD5加密_Apache DBUtils_监听器 知识回顾
  4. DataGridView的单元格控制只能输入数字
  5. Flex前端与Java服务端交互,反射机制挑大旗
  6. python转载[编码问题]
  7. ibatis 的 This SQL map does not contain a MappedStatement的错误
  8. 软件相关模块与ansible剧本
  9. banner手动切换效果
  10. 洛谷P2312解方程