想法:自后向前
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char* ReplaceBlank(char str[],int length){
int space = 0,newLength,i = 0;
for(;i < length;i ++){
if(str[i] == ' ')
space ++;
}
newLength = length + space*2;
str[newLength] = '\0';
for(i = length-1; i >=0;i --){
if(str[i] == ' '){
str[newLength-1] = '0';
str[newLength-2] = '2';
str[newLength-3] = '%';
newLength = newLength-3;
}
else{
str[newLength-1]=str[i];
newLength--;
}
}
return str;
}
int main(){
char *str;
str = (char*)malloc(40*sizeof(char*));
str = "Hello World !";
// scanf("%s",str);
printf("%s\n",ReplaceBlank(str,strlen(str)));
free(str);
return 0;
}
有bug,待测。