【C 语言】字符串模型 ( 两头堵模型 | 将 两头堵模型 抽象成业务模块函数 | 形参返回值 | 函数返回值 | 形参指针判空 | 形参返回值操作 )
文章目录
- 一、将 两头堵模型 抽象成业务模块函数
- 二、完整代码示例
一、将 两头堵模型 抽象成业务模块函数
将 两头堵模型 抽象成业务模块函数 相关要点 :
- 形参返回值 : 函数的返回值 , 一般使用 函数形参 间接赋值 进行返回 ; 下面的代码中
int *count
是返回值 ;
int get_count(char *str_all, int *count)
- 函数返回值 : 函数的返回值 , 反映的是函数的执行结果状态 , 返回 0 执行成功 , 返回 -1 执行失败 ;
- 形参指针判空 : 函数的第一项任务就是 判定 形参指针是否合法 , 如果任何一个指针为空 , 直接返回 -1 ;
// 验证指针合法性 , 指针为空直接返回报错if(str_all == NULL || count == NULL){printf("error : str_all == NULL || count == NULL");return -1;}
- 形参返回值操作 : 函数的真正返回值 , 不要急着写入到指针指向的内存中 , 先放在局部变量中 , 最终执行完毕后 , 再写出到指针指向的内存中 ;
// 保存非空字符串长度 , 局部临时变 , 计算结果int count_tmp = 0;// 计算结果count_tmp = j - i + 1;// 通过间接赋值设置返回值*count = count_tmp;
二、完整代码示例
完整代码示例 :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>int get_count(char *str_all, int *count)
{// 验证指针合法性 , 指针为空直接返回报错if(str_all == NULL || count == NULL){printf("error : str_all == NULL || count == NULL");return -1;}// 局部临时指针变量 接收 函数形参char *str = str_all;// 两个字符串索引 , i 是指向头部 , j 指向尾部int i = 0, j = strlen(str) - 1;// 保存非空字符串长度 , 局部临时变 , 计算结果int count_tmp = 0;// 循环条件是 i 指针指向的 位置 为空 则继续循环// 遇到第一个不为空的字符 , 便停止循环// 停止循环时的 i 指向从左侧开始第一个不为空的字符while(isspace(str[i]) && str[i] != '\0'){i++;}// 循环条件是 j 指针指向的 位置 为空 则继续循环// 遇到第一个不为空的字符 , 便停止循环// 停止循环时的 j 指向从右侧开始第一个不为空的字符while(isspace(str[j]) && str[j] != '\0'){j--;}// 计算结果count_tmp = j - i + 1;// 通过间接赋值设置返回值*count = count_tmp;return 0;
}int main()
{// 存在如下字符串, 求 前后不为空 的 子串长度char *str = " sdfsdfsdabc4548411abc ";// 要统计的结果int count = 0;// 调用函数计算上述字符串 收尾不为空 的子串int ret = get_count(str, &count);// 打印结果printf("count = %d\n", count);// 命令行不要退出system("pause");return 0;
}
执行结果 :
【C 语言】字符串模型 ( 两头堵模型 | 将 两头堵模型 抽象成业务模块函数 | 形参返回值 | 函数返回值 | 形参指针判空 | 形参返回值操作 )相关推荐
- 【C 语言】字符串模型 ( strstr-while 模型 | 抽象函数模型 | 业务子函数接口定义要点 | 形参指针间接赋值 | 返回值状态 | 形参指针处理 | 形参指针判空 | 形参返回值 )
文章目录 前言 一.业务子函数接口定义要点 二.完整代码示例 前言 字符串开发模型 : strstr-while/do-while 模型 : 在 字符串 中 查找 子串特征 ; 两头堵模型 : 两个指 ...
- 【C 语言】字符串模型 ( 字符串翻转模型 | 抽象成业务函数 | 形参返回值 | 函数返回值 | 函数形参处理 | 形参指针判空 )
文章目录 一.字符串翻转模型 业务函数 二.完整代码示例 一.字符串翻转模型 业务函数 将上一篇博客 [C 语言]字符串模型 ( 字符串翻转模型 ) 的代码 , 主要业务逻辑 , 抽象成函数 ; 字符 ...
- C语言字符串中最后一个单词的长度的算法(附完整源码)
C语言字符串中最后一个单词的长度的算法 C语言字符串中最后一个单词的长度的算法完整源码(定义,实现,main函数测试) C语言字符串中最后一个单词的长度的算法完整源码(定义,实现,main函数测试) ...
- C语言字符串左右排序交换
该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105164028 C ...
- 【C 语言】字符串拷贝 ( 函数形参使用推荐方法 | 凡是涉及 修改指针指向 的操作一律创建新的 指针变量 执行 | 引入 辅助 局部 指针变量 )
文章目录 一.函数形参使用推荐方法 二.完整代码示例 一.函数形参使用推荐方法 在函数中 , 形参 中的 指针变量 , 不建议直接使用 ; 推荐 在 函数中 , 定义 局部 指针变量 , 接收 形参中 ...
- 【C 语言】字符串拷贝 ( 指针使用前判空 | while 空语句 )
文章目录 一.指针使用前判空 二.while 空语句 三.代码示例 一.指针使用前判空 在任何指针使用之前 , 要先进行判空 ; 尤其是 函数 形参 指针 , 使用前先 判断该 指针变量 是一个合法的 ...
- C语言——字符串函数(必收藏)
目录 1.strlen 1.1易错(例) 1.2模拟实现 1.2.1计数器形式 1.2.2指针-指针形式 1.2.3递归形式 2.strcpy 2.1易错(例) 2.2模拟实现 3.strcat 3. ...
- C语言字符串相关一级指针内存模型
C语言字符串相关一级指针内存模型 通过实例探索一级指针内存模型 通过实例探索一级指针内存模型 void main() {char buf[20]= "aaaa";char buf2 ...
- 【视频】Python和R语言使用指数加权平均(EWMA),ARIMA自回归移动平均模型预测时间序列...
原文链接:http://tecdat.cn/?p=21773 时间序列(从现在起称为TS)被认为是数据科学领域中鲜为人知的技能之一(点击文末"阅读原文"获取完整代码数据). 视频: ...
最新文章
- 基于Go的语义解析开源库FMR,“屠榜”模型外的NLP利器
- ML之LiR:利用LiR线性回归算法(自定义目标函数MSE和优化器GD)对Boston房价数据集(两特征+归一化)进行回归预测
- python 之GUI设计:messabebox组件
- wxWidgets:使用自定义对话框和 sizer
- /boot/grub/grub.conf文件详解
- HDU - 4552 怪盗基德的挑战书(后缀数组+RMQ/KMP+dp)
- android短信增加条目,Android仿短信条目右上角的红色小圆球提示气泡
- PHP制作登录异常ip检测功能实例
- (操作系统题目题型总结)第三章:同步与互斥
- 电脑重置后我的电脑没有了怎么办_笔记本电脑没有声音怎么办?
- T-SQL常用日期函数
- java飞机大战游戏
- 计算机导论dos实验报告,计算机导论实验报告-DOS常用命令的使用.doc
- android 添加文件打开方式
- 【用来参考】AndroidQ SystemUI之锁屏加载(上)滑动锁屏
- 在firefox的flashgot中配置各种下载器
- linux cp dd 不同文件系统,根文件系统的制作
- SpringBoot爬虫
- 卡内基·梅隆大学计算机科学系主任周以真的父母是中国人吗,计算思维(Computational Thinking)...
- cesium实现鹰眼地图(三维)效果