例如:
- 输入:We are happy
- 输出:We%20are%20happy
思路:
- 数清字符串中空格数量,然后增加字符串长度
- 设置end1和end2这两个字符串末尾角标,分别指向原字符串末尾和新字符串末尾
- 将原字符串由尾部开始复制到新字符串末尾,遇到空格则将其改为%20
- end1和end2角标相同,循环结束
源代码:
#include <stdio.h>
#include <string.h>
void ReplaceSpace(char* str, int length)
{
int count = 0;
char* p = str;
while (*p)
{
if (*p == ' ')
{
count++;
}
p++;
}
int newlen = length + count * 2;
int end1 = length - 1;
int end2 = newlen - 1;
str[end2 + 1] = '\0';
while (end1 != end2)
{
if (str[end1] != ' ')
{
str[end2--] = str[end1--];
}
else
{
str[end2--] = '0';
str[end2--] = '2';
str[end2--] = '%';
end1--;
}
}
}
int main()
{
char ch[50];
gets(ch);
int len = strlen(ch);
ReplaceSpace(ch, len);
printf("%s\n", ch);
return 0;
}