IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 头歌C/C++实训 指针实训《去掉字符串首尾空格》 -> 正文阅读

[C++知识库]头歌C/C++实训 指针实训《去掉字符串首尾空格》

头歌C/C++实训 指针实训《去掉字符串首尾空格》

任务要求

任务描述

补充代码,以实现去掉字符串(字符串由平台提供,且已在主函数中获取)首尾空格的功能。具体要求如下:

·对于输入的字符串,去掉该字符串首尾的空格后输出;

·字符串的存储使用一维字符数组,但本关要求使用指针操作。写完程序后,你也会发现使用指针实现会容易得多。

例子与说明

为了方便显示空格,下面给出的测试输入使用下划线 ‘_’ 表示空格。

测试输入:_____asd
预期输出:asd

   asd//输入
asd//输出

测试输入:_a_b_c_d
预期输出:a_b_c_d

   a b c d  //输入
a b c d//输出

基本思路

所需知识

指针

指针是C语言几乎最后的学习的内容,其最厉害的也是最方便的地方就是可以利用指针一个量对数组进行处理,如截断,取位等等。

当然,简单也说明掌握的困难,特别是理解方面。

具体我们在实战中解释。


具体实现

基础所给代码

#include <iostream>
using namespace std;


char * trim(char * str);

int main()
{
    char s[1024];     // 定义存储字符串的一维字符数组
    // 输入一行字符,可以包含空格
    // 输入的字符串存入s中,最多读取个字符,后面自动加上'\0'
    cin.getline(s,1024);
    cout << trim(s) << endl;     // 输出去掉首尾空格后的字符串
    return 0;
}

// 函数trim:去掉字符串首尾空格
// 参数:str-字符指针,指向输入的字符串
// 返回值:字符指针,指向去掉首尾空格后的字符串(首地址)
// 提示:可以直接在字符串str中操作
char * trim(char * str)
{
    // 请在此添加代码,实现函数trim
    /********** Begin *********/
    
    
    
    /********** End **********/
}

我们在这串代码中,先判断给我们的几个变量的类型与可利用条件;

第一个是这里的

char * trim(char * str)

这个函数的定义,说明以下:
1.此函数所用值为指针

2.此函数也需要返回指针值

因此,str代表的是输入进来的一个字符串数组对应的指针。

我们对str进行处理即可。


思路展示

首先,题目要求我们去除的是首尾字符。
首位处理: 可直接用if分支判断是不是有空格然后直接将指针移位。
解释一下,指针相当于含两个信息,举个例子:

char *p = a[1024];

此处 p 是数组 a 的指针,p可以代表数组 a 的首位地址(初始情况) ,若输出则可以输出数组 a 所含有的值。

在进行数组中每位比较时,利用指针更加方便。
代码如下:

char *p;
while(*str==' '){
        str++;//字符是空格的时候,就把指针后移
}
p=str; //从这里开始赋值str指针的信息给p指针,将先找到末尾,然后p--递减,从末尾开始处理;

此处对str的操作不难理解,
到末尾再次 return str 时指针初始位置已不再是空格处了,已经移动到有字母的地址。


末尾处理: 这里得思路是重新设置一个指针从末尾开始往前移,对同一数组进行处理,具体则是先找到 ‘\0’ 这个字符串截止符,找到截止符就意味着找到了字符串的末尾,再从末尾判断空格。

while(*p!='\0'){
        p++;//p一直移动到字符串的结尾
    }
    p--;
    while(p>str&&*p==' '){ //str的位置是开头,确定p移动的底线和处理的条件
        *p='\0'; //如果是空格的话,提前截止字符串
        p--;
    }
    return str;

代码展示

char* trim(char* str)
{
    char *p = str;
    while(*p != '\0')
    {
     	p++;
    }   
    p--;
    while(p >= str && *p == ' ')
    {
        *p = '\0';
        p--;
    }
    p = str;
    
    while(*p == ' ')
    {
     	p++;
    }
    return p;
}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 00:51:42  更:2022-09-04 00:52:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/12 21:08:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码