【C 语言】字符串模型 ( 字符串翻转模型 )
文章目录
- 一、字符串翻转模型
- 二、完整代码示例
一、字符串翻转模型
业务场景 : 给定下面的字符串 , 将下面的字符串翻转 ;
// 将下面的字符串翻转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 语言】字符串模型 ( 字符串翻转模型 )相关推荐
- 【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | 引入线程安全概念 )
文章目录 一.引入线程安全概念 二.完整代码示例 一.引入线程安全概念 在上一篇博客 [C 语言]字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | strncat 函数 ) ...
- 【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | strncat 函数 )
文章目录 一.strncat 字符串连接函数 二.借助 递归函数操作 逆序字符串操作 三.完整代码示例 一.strncat 字符串连接函数 strncat 函数 : 将 const char *src ...
- 【C 语言】字符串模型 ( 字符串翻转模型 | 抽象成业务函数 | 形参返回值 | 函数返回值 | 函数形参处理 | 形参指针判空 )
文章目录 一.字符串翻转模型 业务函数 二.完整代码示例 一.字符串翻转模型 业务函数 将上一篇博客 [C 语言]字符串模型 ( 字符串翻转模型 ) 的代码 , 主要业务逻辑 , 抽象成函数 ; 字符 ...
- 【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序打印字符串 | 递归要素 | 递归停止条件 | 递归操作 )
文章目录 一.借助 递归函数操作 逆序打印字符串 二.完整代码示例 一.借助 递归函数操作 逆序打印字符串 递归需要掌握下面 222 个点 : 参数入栈模型 : 第 111 次 , "sdh ...
- 【C 语言】字符串模型 ( strstr-do…while 模型 )
文章目录 前言 一.strstr 函数 二.子串查找业务场景 三.代码示例 前言 字符串开发模型 : strstr-while/do-while 模型 : 在 字符串 中 查找 子串特征 ; 两头堵模 ...
- 【C 语言】字符串模型 ( 两头堵模型 )
文章目录 一.两头堵模型 二.完整代码示例 一.两头堵模型 两头堵模型 是 有 222 个指针 , 一个指向字符串头部 , 一个指向字符串尾部 ; 头部指针 从左向右 开始遍历 ; 尾部指针 从右向左 ...
- 【C 语言】字符串 一级指针 内存模型 ( 指定大小字符数组 | 未指定大小字符数组 | 指向常量字符串的指针 | 指向堆内存的指针 )
文章目录 一.字符串 一级指针 内存模型 1.指定大小字符数组 2.未指定大小字符数组 3.指向常量字符串的指针 4.指向堆内存的指针 一.字符串 一级指针 内存模型 #include <std ...
- c语言 指针到字符串,C语言中的指针和字符串
前言 务必理解指针与内存模型,不要死记硬背. 内存里的字符串 C语言中的字符串一般是char *类型的,这是怎样存在内存中的呢? cchar *s = "NIHAO"; | s:4 ...
- c语言查询学号(字符串),c语言短学期
<C语言程序设计课程>实验教学大纲 课程名称:C语言程序设计 课程代码:304056031 304096031 课程属性:专业(技术)基础课 实验教材或指导书名称:自编 实验性质:独立开设 ...
最新文章
- 反弹和补遗:再论Bjarne Stroustrup的基于对象的含义
- SrpingCloud 之SrpingCloud config分布式配置中心
- spring InitializingBean接口
- oracle11gasm,Oracle11gASM之ACFS创建案例
- vue 获取元素在浏览器的位置_前端开发JS获取页面元素的位置
- python打开csv文件画散点图_在Python 3.6中从CSV绘制纬度经度
- 999元抓出奢侈品包包,万亿市场在实体店找到了新春天!
- 超融合架构的优缺点_知道 超融合基础架构吗
- 互利网上数字金融典型场景: 网络借贷
- 语音识别的概念和前世今生
- Gromacs相关基础知识
- Spectrum数据采集卡和任意波形发生器在杨百翰大学声波研究中的应用
- Mybatis-Plus 新手入门,一篇足以
- 优化计算机 教学设计,信息技术优化教学设计
- LeetCode62. 不同路径(java解法——动态规划)
- Chrome浏览器无法启动Flash Player问题
- clickhouse--物化视图
- rda分析怎么做_群落分析的冗余分析(RDA)概述
- 西门子PLC与IFIX软件以太网通讯
- 淘宝产品主图怎么做?大神导航,一个神奇的网站,从此开启大神之路!