写一个rtrim()函数消除字符串后面的空格字符。编main函数调用测试它。
**提示信息:“请输入一个字符串:”
**输出格式要求:“去掉右边的空格后为%s!\n”
程序运行示例:
请输入一个字符串:hkhnk
去掉右边的空格后为hkhnk!
/**********************************************
若想写成指针的形式,可以参考注释将部分语句替换
此题意图默认应该为末尾只有一个空格,但可以扩展为末尾有多个空格的形式!!!
************************************************/
#include<stdio.h>
#include<string.h>
#define SIZE 30
void rtrim(char s[]); //void rtrim(char *s);
int main()
{
char s[SIZE];
printf("请输入一个字符串:");
gets_s(s); //gets_s为 VS2019的写法,若在其他软件上报错可改为gets
rtrim(s);
}
void rtrim(char s[]) //void rtrim(char *s)
{
int j;
j = strlen(s);
for (;;) //for循环是为了排查出字符串末尾的第一个空格的位置
{
if (s[j - 1] == ' '&&s[j-2]!=' ') // if (*(s+j-1) == ' ' && *(s+j-2)!= ' ')
{
s[j - 1] = '\0'; //将末尾最开始的空格变为 \0 *(s+j-1) = '\0'
break;
}
else if (s[j - 1] == ' ' && s[j - 2] == ' ') //else if (*(s+j-1) == ' ' && *(s+j-2) == ' ')
{
j--;
}
}
printf("去掉右边的空格后为%s!\n", s);
}
strlen函数可以计算出除 ‘\0’ 之外的有效字符的个数,可以自己写一个strlen函数原型:
int strlen(char* s)
{
int i, count = 0;
for (i = 0; *(s + i) != '\0'; i++)
count++;
return count;
}