请实现一个函数,把字符串中的每个空格替换为“%20”。
例如字符串为“We Are Happy” 转换为“We%20Are%20Happy”
我们要注意,空格转化为%20,长度也会有所改变。
#include <iostream>
using namespace std;
void ReplaceBlank(char *str, int length)
{
if(str == NULL && length <= 0) // 先做判断
return;
int OriginalLength = 0;
int BlankLength = 0;
int i = 0;
while(str[i] != '\0') //计算原字符串的长度 和 空格的个数
{
OriginalLength++;
if(str[i] == ' ')
{
BlankLength++;
}
i++;
}
int NewLength = OriginalLength + BlankLength * 2; //转换之后的长度
if(NewLength > length) //判断是否超过了定义的字符串的长度
return;
int Original = OriginalLength;
int New = NewLength;
while(Original >= 0 && New > Original) //从后向前替换
{
if(str[Original] == ' ')
{
str[New--] = '0';
str[New--] = '2';
str[New--] = '%';
}
else
str[New--] = str[Original];
Original--;
}
}
int main()
{
char str[25] = "We Are Happy!";
int length = sizeof(str);
ReplaceBlank(str, length);
printf("%s", str);
return 0;
}