请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解决思路:刚开始没思路时,可以由简入繁
1、先来简单的,有了大体的思路
#include <stdio.h>
#include <string.h>
void replace(char *a){
char b[100];
int i=0,j=0;
while(a[i] != '\0'){
if(a[i]==' '){
b[j++]='%';
b[j++]='2';
b[j++]='0';
i++;
}else{
b[j++]=a[i++];
}
}
printf("%s\n", b);
}
int main(){
char a[100] = "my name is hee";
replace(a);
}
2、再上述的基础上,再拓展
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *replace(char *a){
int i=0,j=0;
int len = strlen(a);
char *b;
b = (char *)malloc(len+1);
memset(b, 0, sizeof(b));
while(i<len){
if(a[i]==' '){
len = len +2;
b=(char *)realloc(b, len); //每次遇到空格,增大2个空间
memcpy(b+j, "%20", 3);
j=j+3;
i++;
}else{
b[j++]=a[i++];
}
}
b[j]='\0';
return b;
}
int main(){
char a[100];
gets(a); //输入字符串
char *b = replace(a);
printf("%s\n", b);
free(b);
b = NULL;
}