【PTA刷题】串右整理(代码+详解)

简介: 【PTA刷题】串右整理(代码+详解)


题目

请编写函数,删除字符串的后端空白字符。

函数原型

char* StrRTrim(char *str);

说明:函数将字符串 str 结尾的一连串空白字符全部删去(前面的和中间的空白字符保留),函数值为 str。

提示:空白字符包括空格(SP)、水平制表(HT)、垂直制表(VT)、回车(CR)、换行(LF)、换页(FF)等。可利用 isspace 函数来判断空白字符。

裁判程序

#include <stdio.h>
#include <ctype.h>
char* StrRTrim(char *str);
int main()
{
    char a[1024];
    gets(a);
    StrRTrim(a);
    puts(a);
    return 0;
}
/* 你提交的代码将被嵌在这里 */

输入样例

Welcome to Beijing!

注:“Welcome to Beijing!” 前后各有若干个空白字符。

输出样例

Welcome to Beijing!

C语言代码

char* StrRTrim(char *str) {
    int len = strlen(str);
    int i = len - 1;
    // 从字符串末尾向前查找,直到找到第一个非空白字符
    while (i >= 0 && isspace(str[i])) {
        i--;
    }
    // 在第一个非空白字符的后面添加字符串结束符 null
    str[i + 1] = '\0';
    return str;
}

详解

首先,题目要求我们编写一个函数 StrRTrim,这个函数的作用是删除字符串的后端空白字符。后端空白字符包括字符串末尾的空格、制表符、回车、换行等。需要注意的是,字符串的前面和中间的空白字符要保留。

接下来,我们来看看具体的 C 语言代码:

cCopy codechar* StrRTrim(char *str) {
    int len = strlen(str);  // 获取字符串的长度
    int i = len - 1;        // 初始化 i 为字符串末尾索引
    // 从字符串末尾向前查找,直到找到第一个非空白字符
    while (i >= 0 && isspace(str[i])) {
        i--;
    }
    // 在第一个非空白字符的后面添加字符串结束符 null
    str[i + 1] = '\0';
    return str;
}

这段代码首先获取了输入字符串的长度,然后初始化一个索引 i 为字符串末尾。接下来,通过一个 while 循环,从字符串末尾向前查找,直到找到第一个非空白字符的位置。在找到这个位置后,将该位置后面的所有字符都置为字符串结束符 \0,即表示字符串的结束。

最后,函数返回原始的字符串 str

main 函数中,用户输入一个字符串,然后调用 StrRTrim 函数,最后输出处理后的字符串。

例如,对于输入样例:

Welcome to Beijing!

输出样例为:

Welcome to Beijing!

这样,函数就完成了删除字符串后端空白字符的任务。

目录
相关文章
|
11月前
|
数据安全/隐私保护
5分钟注册一个可用Gemini的谷歌邮箱账号
5分钟注册一个可用Gemini的谷歌邮箱账号
5055 23
5分钟注册一个可用Gemini的谷歌邮箱账号
注册域名需要多久
注册域名需要多久
441 0
|
开发框架 供应链 JavaScript
齐套检查与分配在生产计划中的实现
最近一段时间看到很多关于生产计划中,作齐套检查与分析讨论,正好我们的易排1.5版添加了类似功能。本文结合易排平台上相应的功能与特征,介绍一下我们在这方面的些许研究结论与看法。
620 0
|
负载均衡 网络协议 应用服务中间件
nginx-http反向代理与负载均衡
nginx-http反向代理与负载均衡
211 0
|
存储 数据可视化 atlas
maftools | 从头开始绘制发表级oncoplot(瀑布图)
maftools | 从头开始绘制发表级oncoplot(瀑布图)
729 0
|
关系型数据库 MySQL 数据库
SQLite、MySQL和PostgreSQL 三种关系数据库哪个好?
关系型数据库的使用已经有相当长的时间了。它们变得流行起来托了管理系统的福,关系模型被实现得相当的好,并且被证明是操作数据的好方法(特别是事务性强的应用)。 在这篇DigitalOcean文章中,我们将尝试理解一些最常用、最流行的关系型数据库管理系统(RDBMS)的内核区别。
2155 0
阿里云是没有人工客服了吗,现在找工单都要收费
阿里云是没有人工客服了吗,现在找工单都要收费
|
安全 API 数据库
系统权限设计 - 基本概念和思路
权限系统的设计几乎是每个系统都必需的模块,最近对系统的权限设计有一些心得体会。遇到过一些坑,也有一些思考,所以想写下来分享给大家。 本文的目的是帮助大家理清楚权限设计中的一些基本概念,提供常用的权限系统设计思路。
816 0
|
存储 弹性计算 运维
我的 Serverless 实战 — Serverless 架构理念 ( 后端服务器发展 | Serverless 与 ServerFul | Serverless 定义 | 架构优缺点 )
我的 Serverless 实战 — Serverless 架构理念 ( 后端服务器发展 | Serverless 与 ServerFul | Serverless 定义 | 架构优缺点 )
758 0