文章目录

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

一、引入线程安全概念


在上一篇博客 【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 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | 引入线程安全概念 )相关推荐

  1. 【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | strncat 函数 )

    文章目录 一.strncat 字符串连接函数 二.借助 递归函数操作 逆序字符串操作 三.完整代码示例 一.strncat 字符串连接函数 strncat 函数 : 将 const char *src ...

  2. 【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序打印字符串 | 递归要素 | 递归停止条件 | 递归操作 )

    文章目录 一.借助 递归函数操作 逆序打印字符串 二.完整代码示例 一.借助 递归函数操作 逆序打印字符串 递归需要掌握下面 222 个点 : 参数入栈模型 : 第 111 次 , "sdh ...

  3. [C语言指针练习二]字符串逆序,使用指针,写一个函数,可以逆序字符串的内容。

    指针练习题2 题目:字符串逆序 内容与要求:使用指针,写一个函数,可以逆序一个字符串的内容. 举例: 输入: I Love You. 输出: .uoY evoL I   输入: abc 输出: cba ...

  4. 逆序字符串 和 字符串的逆序输出 的区别~

    今天我们讲解字符串的逆序和逆序输出,并且通过一个综合题型来加深印象和练手! 超佳出品 文章目录 前言 一.逆序字符串,字符串的逆序输出是什么? 二.实例讲解 1.字符串的逆序输出 2.逆序字符串 总结 ...

  5. 利用函数“逆序字符串”的三种解法

    文章目录 方法一:使用数组下标的方法进行字符串的逆序 方法二:使用数组地址的方式逆序字符串 方法三:直接传数组首位元素地址进行逆序 写一个函数,可以逆序一个字符串的内容 方法一:使用数组下标的方法进行 ...

  6. python12345输出54321_C语言编写程序 :输入一个正整数,将其逆序输出。例如,输入12345,输出54321. 跪求大神用循环语句...

    点击查看C语言编写程序 :输入一个正整数,将其逆序输出.例如,输入12345,输出54321. 跪求大神用循环语句具体信息 答:#include int main() { int num; scanf ...

  7. c语言智力题 操作符详解例题 数据存储 指针初阶 水仙花数 杨辉三角 逆序字符串 喝汽水问题 打印图形 猜凶手 使用指针打印数组内容 调整奇数偶数顺序 运动员猜名次

    [题目名称] 下面代码的结果是:a #include <stdio.h> int i; int main() {i--; //sizeof'的返回值是无符号整型if (i > siz ...

  8. C语言逆序字符串(递归实现)

    算法思想 以字符串"abcdef"为例 1.将a保存到temp中 2.将f放到a的位置 3.f处填写'\0' 4.计算bcde的长度 5.如果bcde的长度大于1,则逆序 6.将a ...

  9. 每天一道LeetCode-----以单词为单位逆序字符串,每个单词之间以一个空格分隔(原字符串中可能有多个空格)

    Reverse Words in a String 原题链接Reverse Words in a String 将字符串以单词为单位逆序,每个单词之间以一个空格间隔(原字符串中可能有多个空格) 逆序的 ...

最新文章

  1. SAP PM 设备维护事务码收集整理
  2. 智慧停车介绍、产业链市场全透析
  3. mac on linux,Mac- on- Linux
  4. HTML表格中的nowrap
  5. 如何做到全年配送 0 故障?盒马揭秘 12个关键技术
  6. 【机器视觉】 dev_unmap_prog算子
  7. 如何用Python探究你喜爱的歌手?大数据还是很厉害的
  8. mybatisplus查询今天的数据_Spring系列——MybatisPlus
  9. php 导航栏链接网页,怎样用php来给网页做导航栏_php实例
  10. [转载]项目风险管理七种武器-离别钩
  11. oracle Lpad()函数和Rpad()函数的用法
  12. CF995A Tesla
  13. win10 uwp 重启软件
  14. 4K 对齐与固态硬盘检测工具
  15. CAD.net二次开发之图层,文字样式,标注样式,标注封装,引线的封装
  16. 如何确定直流电机驱动的 PWM 频率
  17. ps制作设计网站登录界面
  18. ArcBlock世界第一区块链基石生态系统
  19. 硕士论文怎么寻找创新点?
  20. 中缀和后缀表达式的转换

热门文章

  1. windows扩展C盘空间
  2. NAT概念解释(不完全版,但不会搞错...)
  3. day1-Python擅长的领域+学习内容
  4. 最长上升子序列(LIS)
  5. css阻止input select默认事件
  6. 级联下拉框效果,动态加载图片
  7. 分享20个非常有用的Web开发工具和框架
  8. editplus替换空白行的正则表达式
  9. XCode4 实践HelloWorld
  10. springcloud微服务总结四 负载均衡