先找出空格的个数,计算整体的偏移,再从后往前遍历字符串,做替换
void replaceSpace(char *str,int length) {
if(str==NULL||length<0){
return;
}
int numberOfBlank=0;
int originalLength=0;
int i=0;
while(str[i]!='\0'){
if(str[i]==' '){
numberOfBlank++;
}
i++;
originalLength++;
}
int newLength=originalLength+numberOfBlank*2;
if(newLength>length){
return;
}
int indexOfOriginal=originalLength;
int indexOfNew=newLength;
while(indexOfNew>indexOfOriginal&&indexOfOriginal>=0){
if(str[indexOfOriginal]==' '){
str[indexOfNew--]='0';
str[indexOfNew--]='2';
str[indexOfNew--]='%';
}else{
str[indexOfNew--]=str[indexOfOriginal];
}
indexOfOriginal--;
}
}