文章目录

  • 一、字符串翻转模型
  • 二、完整代码示例

一、字符串翻转模型


业务场景 : 给定下面的字符串 , 将下面的字符串翻转 ;

    // 将下面的字符串翻转char str[] = "sdfsdfsdabc4548411abc";

计算字符串长度 : 目的是为了得到 指向 字符串 收尾位置的 指针 ;

    // 计算字符串长度int len = strlen(str);

收尾指针 : 声明两个指针 , 分别指向字符串收尾字符元素 ;

    // 指向字符串开始位置的指针char *p_start = str;char *p_end = str + len - 1;

字符串翻转 : 从两头向中间遍历 , 收尾指针指向的元素互换 , 以达到字符串翻转的目的 ;

    // 从两边向中间遍历// 利用指向收尾的指针 , 交互指针指向的元素while (p_start < p_end) {// 交换收尾字符// 记录 p_start 指针指向的首部字符char c = *p_start;// 将尾部字符赋值给首部字符*p_start = *p_end;// 将首部字符赋值给尾部字符*p_end = c;// 指向头部的指针自增p_start++;// 指向尾部的指针自减p_end--;}

注意 : 上述由于直接在 字符串 所在的内存上进行修改 , 因此必须是 可修改的 栈内存 或 堆内存 , 不能是 全局区内的常量字符串 ;

参考 【错误记录】C 语言中通过指针操作字符串常量出错记录 ( 只有 栈内存 或 堆内存 中的数据才能通过指针修改 | 不要通过指针修改常量区的字符串 ) 报错 , 不要尝试使用指针修改常量区的数据 ;

二、完整代码示例


完整代码示例 :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>int main()
{// 将下面的字符串翻转char str[] = "sdfsdfsdabc4548411abc";// 计算字符串长度int len = strlen(str);// 指向字符串开始位置的指针char *p_start = str;char *p_end = str + len - 1;// 从两边向中间遍历// 利用指向收尾的指针 , 交互指针指向的元素while (p_start < p_end) {// 交换收尾字符// 记录 p_start 指针指向的首部字符char c = *p_start;// 将尾部字符赋值给首部字符*p_start = *p_end;// 将首部字符赋值给尾部字符*p_end = c;// 指向头部的指针自增p_start++;// 指向尾部的指针自减p_end--;}// 打印结果printf("str = %s\n", str);// 命令行不要退出system("pause");return 0;
}

执行结果 :

【C 语言】字符串模型 ( 字符串翻转模型 )相关推荐

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

    文章目录 一.引入线程安全概念 二.完整代码示例 一.引入线程安全概念 在上一篇博客 [C 语言]字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | strncat 函数 ) ...

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

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

  3. 【C 语言】字符串模型 ( 字符串翻转模型 | 抽象成业务函数 | 形参返回值 | 函数返回值 | 函数形参处理 | 形参指针判空 )

    文章目录 一.字符串翻转模型 业务函数 二.完整代码示例 一.字符串翻转模型 业务函数 将上一篇博客 [C 语言]字符串模型 ( 字符串翻转模型 ) 的代码 , 主要业务逻辑 , 抽象成函数 ; 字符 ...

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

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

  5. 【C 语言】字符串模型 ( strstr-do…while 模型 )

    文章目录 前言 一.strstr 函数 二.子串查找业务场景 三.代码示例 前言 字符串开发模型 : strstr-while/do-while 模型 : 在 字符串 中 查找 子串特征 ; 两头堵模 ...

  6. 【C 语言】字符串模型 ( 两头堵模型 )

    文章目录 一.两头堵模型 二.完整代码示例 一.两头堵模型 两头堵模型 是 有 222 个指针 , 一个指向字符串头部 , 一个指向字符串尾部 ; 头部指针 从左向右 开始遍历 ; 尾部指针 从右向左 ...

  7. 【C 语言】字符串 一级指针 内存模型 ( 指定大小字符数组 | 未指定大小字符数组 | 指向常量字符串的指针 | 指向堆内存的指针 )

    文章目录 一.字符串 一级指针 内存模型 1.指定大小字符数组 2.未指定大小字符数组 3.指向常量字符串的指针 4.指向堆内存的指针 一.字符串 一级指针 内存模型 #include <std ...

  8. c语言 指针到字符串,C语言中的指针和字符串

    前言 务必理解指针与内存模型,不要死记硬背. 内存里的字符串 C语言中的字符串一般是char *类型的,这是怎样存在内存中的呢? cchar *s = "NIHAO"; | s:4 ...

  9. c语言查询学号(字符串),c语言短学期

    <C语言程序设计课程>实验教学大纲 课程名称:C语言程序设计 课程代码:304056031 304096031 课程属性:专业(技术)基础课 实验教材或指导书名称:自编 实验性质:独立开设 ...

最新文章

  1. 反弹和补遗:再论Bjarne Stroustrup的基于对象的含义
  2. SrpingCloud 之SrpingCloud config分布式配置中心
  3. spring InitializingBean接口
  4. oracle11gasm,Oracle11gASM之ACFS创建案例
  5. vue 获取元素在浏览器的位置_前端开发JS获取页面元素的位置
  6. python打开csv文件画散点图_在Python 3.6中从CSV绘制纬度经度
  7. 999元抓出奢侈品包包,万亿市场在实体店找到了新春天!
  8. 超融合架构的优缺点_知道 超融合基础架构吗
  9. 互利网上数字金融典型场景: 网络借贷
  10. 语音识别的概念和前世今生
  11. Gromacs相关基础知识
  12. Spectrum数据采集卡和任意波形发生器在杨百翰大学声波研究中的应用
  13. Mybatis-Plus 新手入门,一篇足以
  14. 优化计算机 教学设计,信息技术优化教学设计
  15. LeetCode62. 不同路径(java解法——动态规划)
  16. Chrome浏览器无法启动Flash Player问题
  17. clickhouse--物化视图
  18. rda分析怎么做_群落分析的冗余分析(RDA)概述
  19. 西门子PLC与IFIX软件以太网通讯
  20. 淘宝产品主图怎么做?大神导航,一个神奇的网站,从此开启大神之路!

热门文章

  1. Java并发编程:CopyOnWrite容器的实现
  2. Gamma校正及其OpenCV实现
  3. 将用户输入内容中的尖括号、引号等进行转义
  4. TOMCAT startup.bat
  5. Vmware中安装RHEL5
  6. 计算一个二进制数中数字“1”的个数(位运算)
  7. github上手实践教程
  8. MVC开发中的常见错误-06-无法在发送 HTTP 标头之后进行重定向。
  9. Android而一个超级漂亮的日历控件
  10. 产品经理提升修炼的方法