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

文章目录

    • 题目
    • C语言代码
    • 详解

题目

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

函数原型

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!

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

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值