【C 语言】字符串模型 ( 字符串翻转模型 )
生活随笔
收集整理的這篇文章主要介紹了
【C 语言】字符串模型 ( 字符串翻转模型 )
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 一、字符串翻轉(zhuǎn)模型
- 二、完整代碼示例
一、字符串翻轉(zhuǎn)模型
業(yè)務(wù)場景 : 給定下面的字符串 , 將下面的字符串翻轉(zhuǎn) ;
// 將下面的字符串翻轉(zhuǎn)char str[] = "sdfsdfsdabc4548411abc";計(jì)算字符串長度 : 目的是為了得到 指向 字符串 收尾位置的 指針 ;
// 計(jì)算字符串長度int len = strlen(str);收尾指針 : 聲明兩個(gè)指針 , 分別指向字符串收尾字符元素 ;
// 指向字符串開始位置的指針char *p_start = str;char *p_end = str + len - 1;字符串翻轉(zhuǎn) : 從兩頭向中間遍歷 , 收尾指針指向的元素互換 , 以達(dá)到字符串翻轉(zhuǎn)的目的 ;
// 從兩邊向中間遍歷// 利用指向收尾的指針 , 交互指針指向的元素while (p_start < p_end) {// 交換收尾字符// 記錄 p_start 指針指向的首部字符char c = *p_start;// 將尾部字符賦值給首部字符*p_start = *p_end;// 將首部字符賦值給尾部字符*p_end = c;// 指向頭部的指針自增p_start++;// 指向尾部的指針自減p_end--;}注意 : 上述由于直接在 字符串 所在的內(nèi)存上進(jìn)行修改 , 因此必須是 可修改的 棧內(nèi)存 或 堆內(nèi)存 , 不能是 全局區(qū)內(nèi)的常量字符串 ;
參考 【錯(cuò)誤記錄】C 語言中通過指針操作字符串常量出錯(cuò)記錄 ( 只有 棧內(nèi)存 或 堆內(nèi)存 中的數(shù)據(jù)才能通過指針修改 | 不要通過指針修改常量區(qū)的字符串 ) 報(bào)錯(cuò) , 不要嘗試使用指針修改常量區(qū)的數(shù)據(jù) ;
二、完整代碼示例
完整代碼示例 :
#include <stdio.h> #include <stdlib.h> #include <string.h>int main() {// 將下面的字符串翻轉(zhuǎn)char str[] = "sdfsdfsdabc4548411abc";// 計(jì)算字符串長度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--;}// 打印結(jié)果printf("str = %s\n", str);// 命令行不要退出system("pause");return 0; }執(zhí)行結(jié)果 :
總結(jié)
以上是生活随笔為你收集整理的【C 语言】字符串模型 ( 字符串翻转模型 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【错误记录】C 语言中通过指针操作字符串
- 下一篇: 【C 语言】字符串模型 ( 字符串翻转模