日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | 引入线程安全概念 )

發布時間:2025/6/17 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | 引入线程安全概念 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、引入線程安全概念
  • 二、完整代碼示例





一、引入線程安全概念



在上一篇博客 【C 語言】字符串模型 ( 字符串翻轉模型 | 借助 遞歸函數操作 逆序字符串操作 | strncat 函數 ) 中 , 雖然 使用遞歸 實現了 字符串逆序 , 但是最終字符串是寫在全局變量中的 , 如果多個線程訪問該方法 , 肯定就出錯了 ;


在函數調用時 , 傳入一個局部變量 char *str_buf , 使用該局部變量存儲 逆序后的字符串 ;

/** 通過遞歸方式 , 逆向遍歷字符串* 將 遞歸遍歷 結果存入 全局變量中* 遞歸指針 作 函數參數*/ void str_inverse(char *str, char *str_buf)



二、完整代碼示例



完整代碼示例 :

#include <stdio.h> #include <stdlib.h> #include <string.h>/** 通過遞歸方式 , 逆向遍歷字符串* 將 遞歸遍歷 結果存入 全局變量中* 遞歸指針 作 函數參數*/ void str_inverse(char *str, char *str_buf) {// 驗證函數形參指針合法性if(str == NULL || str_buf == NULL){return;}// 遞歸停止條件if(*str == '\0'){return;}// 遞歸操作// 該遞歸操作會逐步 將 字符串 從開始位置 入棧// 直到遞歸到 '\0' 位置時 , 才開始出棧// 此處是遞歸點// 遞歸操作執行到這里 , 開始一直遞歸// 遞歸結束后 , 依次執行下面的代碼str_inverse(str + 1, str_buf);// 打印出棧的字符// 注意 : 該打印操作是 遞歸停止條件達成后// 逐個出棧打印printf("*str = %c\n", *str);// 拷貝一個字符到全局變量中//strncpy(str_buf, str, 1);// 連接字符串 , 從 '\0' 位置處開始覆蓋strncat(str_buf, str, 1); }int main() {// 存在如下字符串, 求下面字符串 "abc" 出現次數char *str = "sdh";// 用于存儲逆序后的字符串char str_buf[1024] = {0};// 字符串翻轉str_inverse(str, str_buf);// 打印字符串翻轉結果printf("str_buf = %s\n", str_buf);// 命令行不要退出system("pause");return 0; }

執行結果 :

*str = h *str = d *str = s str_buf = hds 請按任意鍵繼續. . .

總結

以上是生活随笔為你收集整理的【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | 引入线程安全概念 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。