题目:实现一个函数,把字符串中的每个空格替换成“%20”,例如输入“we are happy”,输出“we%20are%20happy”。
我自己试着也写了一下,欢迎大家指正。
#include <iostream>
void replaceBlank(char *src, int len , char *dst , int new_len)
{
// 这里减1是因为最后一个是'\0'
for (int i = len - 1; i >= 0 ; --i)
{
if (src[i] == ' ')
{
dst[--new_len] = '0';
dst[--new_len] = '2';
dst[--new_len] = '%';
}
else
{
dst[--new_len] = src[i];
}
}
}
void main()
{
char *src = "we are happy";
std::cout << src << std::endl;
int len = strlen(src) + 1;
/*----------------------------------*/
// 计算空格数
int blank_num = 0;
for (int i = 0 ; i < len ; ++i)
{
if (src[i] == ' ')
{
blank_num++;
}
}
int new_len = len + 2 * blank_num;
char *dst = new char[new_len];
replaceBlank(src, len, dst , new_len);
std::cout << dst << std::endl;
}