【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | strncat 函数 )
生活随笔
收集整理的這篇文章主要介紹了
【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | strncat 函数 )
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 一、strncat 字符串連接函數(shù)
- 二、借助 遞歸函數(shù)操作 逆序字符串操作
- 三、完整代碼示例
一、strncat 字符串連接函數(shù)
strncat 函數(shù) : 將 const char *src 指針指向的 size_t n 個字符 , 連接到 char *dest 字符串后面 ;
#include <string.h> char * strncat(char *dest, const char *src, size_t n);注意 : 上述操作是 const char *src 字符串 的 首字符 , 覆蓋 char *dest 字符串的 \0 字符 ;
二、借助 遞歸函數(shù)操作 逆序字符串操作
在上一篇博客 【C 語言】字符串模型 ( 字符串翻轉(zhuǎn)模型 | 借助 遞歸函數(shù)操作 逆序打印字符串 | 遞歸要素 | 遞歸停止條件 | 遞歸操作 ) 的基礎上 , 保存逆序結(jié)果 ;
遞歸返回后 , 可以逆序打印字符串中的字符 ;
// 打印出棧的字符// 注意 : 該打印操作是 遞歸停止條件達成后// 逐個出棧打印printf("*str = %c\n", *str);此處只需要將該 字符 保存到 全局變量即可 ;
使用字符串連接函數(shù) strncat 逐個字符拼接字符串 ;
// 連接字符串 , 從 '\0' 位置處開始覆蓋strncat(str_buf, str, 1);三、完整代碼示例
完整代碼示例 :
#include <stdio.h> #include <stdlib.h> #include <string.h>/** 定義全局變量, 用于保存翻轉(zhuǎn)后的字符串*/ char str_buf[1024];/** 通過遞歸方式 , 逆向遍歷字符串* 將 遞歸遍歷 結(jié)果存入 全局變量中* 遞歸指針 作 函數(shù)參數(shù)*/ void str_inverse(char *str) {// 驗證函數(shù)形參指針合法性if(str == NULL){return;}// 遞歸停止條件if(*str == '\0'){return;}// 遞歸操作// 該遞歸操作會逐步 將 字符串 從開始位置 入棧// 直到遞歸到 '\0' 位置時 , 才開始出棧// 此處是遞歸點// 遞歸操作執(zhí)行到這里 , 開始一直遞歸// 遞歸結(jié)束后 , 依次執(zhí)行下面的代碼str_inverse(str + 1);// 打印出棧的字符// 注意 : 該打印操作是 遞歸停止條件達成后// 逐個出棧打印printf("*str = %c\n", *str);// 拷貝一個字符到全局變量中//strncpy(str_buf, str, 1);// 連接字符串 , 從 '\0' 位置處開始覆蓋strncat(str_buf, str, 1); }int main() {// 存在如下字符串, 求下面字符串 "abc" 出現(xiàn)次數(shù)char *str = "sdh";// 初始化 str_buf 全局變量memset(str_buf, 0, sizeof (str_buf));// 字符串翻轉(zhuǎn)str_inverse(str);// 打印字符串翻轉(zhuǎn)結(jié)果printf("str_buf = %s\n", str_buf);// 命令行不要退出system("pause");return 0; }執(zhí)行結(jié)果 :
*str = h *str = d *str = s str_buf = hds 請按任意鍵繼續(xù). . . 《新程序員》:云原生和全面數(shù)字化實踐50位技術專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | strncat 函数 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C 语言】字符串模型 ( 字符串翻转模
- 下一篇: 【C 语言】字符串模型 ( 字符串翻转模