【C 语言】字符串模型 ( strstr-while 模型 | 抽象函数模型 | 业务子函数接口定义要点 | 形参指针间接赋值 | 返回值状态 | 形参指针处理 | 形参指针判空 | 形参返回值 )
生活随笔
收集整理的這篇文章主要介紹了
【C 语言】字符串模型 ( strstr-while 模型 | 抽象函数模型 | 业务子函数接口定义要点 | 形参指针间接赋值 | 返回值状态 | 形参指针处理 | 形参指针判空 | 形参返回值 )
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 前言
- 一、業(yè)務(wù)子函數(shù)接口定義要點(diǎn)
- 二、完整代碼示例
前言
字符串開發(fā)模型 :
-
strstr-while/do…while 模型 : 在 字符串 中 查找 子串特征 ;
-
兩頭堵模型 : 兩個(gè)指針變量 , 一個(gè)指向首部 , 一個(gè)指向尾部 , 進(jìn)行 翻轉(zhuǎn) , 逆序 等操作 ;
-
字符串翻轉(zhuǎn)模型 : 借助 指針 進(jìn)行翻轉(zhuǎn) , 或 借助 棧 后進(jìn)先出的特性 , 進(jìn)行 翻轉(zhuǎn) ;
一、業(yè)務(wù)子函數(shù)接口定義要點(diǎn)
在上一篇博客 【C 語言】字符串模型 ( strstr-while 模型 ) 的基礎(chǔ)上 , 將相關(guān)功能封裝成 API 函數(shù) , 將 主函數(shù) 與 子業(yè)務(wù) 函數(shù)分離開 ;
- 自定義函數(shù)接口 ;
- 分離 自定義的 業(yè)務(wù)子函數(shù) 與 主函數(shù) main() ;
定義的接口如下 :
- 要點(diǎn) 111 形參指針間接賦值 : 主要是獲取子串大小 , 通過 int *sub_count 參數(shù)的 間接賦值 , 實(shí)現(xiàn)函數(shù)結(jié)果返回 ;
- 要點(diǎn) 222 返回值狀態(tài) : 返回值主要是 反應(yīng)函數(shù)執(zhí)行狀態(tài) , 返回 000 代表函數(shù)執(zhí)行成功 ;
函數(shù)中的要點(diǎn) :
- 形參指針處理 : 定義 局部 臨時(shí) 指針變量 , 接收 函數(shù)形參變量 , 盡量不修改 函數(shù) 形參 的值 ;
- 形參指針判空 : 凡是傳入的指針 , 一律判定指針是否合法 ;
- 形參返回值處理 : 返回值不要直接修改 , 先定義臨時(shí)局部變量保存返回值 , 最后執(zhí)行完畢 , 再將返回值 通過 間接賦值 賦值給 形參中的 返回值指針 指向的 內(nèi)存地址 ;
二、完整代碼示例
完整代碼示例 :
#include <stdio.h> #include <stdlib.h> #include <string.h>/** 獲取字符串中子串個(gè)數(shù)接口* char *main_str : 大字符串* char *sub_str : 子字符串* int *sub_count : 存放查找到的子字符串個(gè)數(shù)* 返回值返回執(zhí)行狀態(tài) , 成功返回 0 , 失敗返回失敗代碼*/ int get_sub_count(char *main_str, char *sub_str, int *sub_count) {// 為了不修改 函數(shù) 形參 的值 , 使用指針變量接收 函數(shù)形參char *main_str_tmp = main_str;char *sub_str_tmp = sub_str;// 返回值臨時(shí)值, 先不要修改 sub_count 指針指向的值 , 最后計(jì)算完畢后再修改int sub_count_tmp = 0;// 判定指針是否合法// 如果形參指針為 NULL , 直接退出函數(shù) , 并返回 -1 錯(cuò)誤碼if(main_str_tmp == NULL || sub_str_tmp == NULL || sub_count == NULL){printf("error : main_str_tmp == NULL || sub_str_tmp == NULL || sub_count == NULL");return -1;}// 在循環(huán)條件中// 查找 p 指針指向的字符串中, 是否包含 "abc" 子串// 如果包含 , 返回子串第一次出現(xiàn)的指針地址 , 非 0 則執(zhí)行循環(huán)體內(nèi)容// 如果不包含 , 返回 NULL , 如果沒有找到 , 退出循環(huán) , 繼續(xù)向后執(zhí)行while (main_str_tmp = strstr(main_str_tmp, sub_str_tmp)){// 子串出現(xiàn)次數(shù) + 1sub_count_tmp++;// 跳過當(dāng)前的 "abc" 子串 , 從后面開始遍歷main_str_tmp = main_str_tmp + strlen(sub_str_tmp);// 如果下一個(gè)字節(jié)是結(jié)尾字節(jié) , 直接退出循環(huán)if(*main_str_tmp == '\0'){break;}}// 指針間接賦值 設(shè)置 返回值*sub_count = sub_count_tmp;return 0; }int main() {// 存在如下字符串, 求下面字符串 "abc" 出現(xiàn)次數(shù)char *str = "sdfsdfsdabc4548411abc";// 記錄下 "abc" 子串出現(xiàn)次數(shù)int count = 0;// 要查詢的子串char sub[] = "abc";// 注意返回值 使用 指向 count 變量的指針 間接賦值 進(jìn)行返回int ret = get_sub_count(str, sub, &count);// 如果返回非 0 值 , 說明執(zhí)行失敗if(ret != 0){printf("get_sub_count failed!");}// 打印子串出現(xiàn)次數(shù)printf("count = %d\n", count);// 命令行不要退出system("pause");return 0; }執(zhí)行結(jié)果 :
總結(jié)
以上是生活随笔為你收集整理的【C 语言】字符串模型 ( strstr-while 模型 | 抽象函数模型 | 业务子函数接口定义要点 | 形参指针间接赋值 | 返回值状态 | 形参指针处理 | 形参指针判空 | 形参返回值 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C 语言】字符串模型 ( strstr
- 下一篇: 【C 语言】字符串模型 ( 两头堵模型