【PTA刷题】串右整理(代码+详解)
2023-12-13 06:42:36
文章目录
- 题目
- 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!
这样,函数就完成了删除字符串后端空白字符的任务。
文章来源:https://blog.csdn.net/weixin_75202470/article/details/134962110
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!