如果长度一样,就不要考虑覆盖了
空格替换成%020 就差一步啊,傻啊,先挪动,就不会覆盖了。
画图看变化前后,不就清楚了,想你没
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
/*
2.将 字 符 串 中 的 空 格 替 换 成 “%020”
*/
void space_fun(char *, int len);
int main()
{
char str[20];
char *p;
puts("请输入带空格的一句话:");
gets(str);
space_fun(str, 20);
p = str;
printf("%s\n", p);
system("pause");
return 0;
}
void space_fun(char *a, int len) {
int i=0;
int j = 0;
for (i = 0; i < len; i++) {
if (*(a+i) == ' ')
{
len += 3;
j = len - 1;
while (j - 3 > i) {
*(a + j) = *(a + j - 3); // 替换一个空格,空格数减一
j--;
}
*(a + i) = '%';
*(a + i + 1) = '0';
*(a + i + 2) = '2';
*(a + i + 3) = '0';
}
}
}