空格替换为 %20
(1) 遍历字符串统计空格的个数n,以及字符串的长度len。
(2) 每增加一个空格字符串长度增加2,则替换后字符串长度为len1=len+2*n。
(3) 设置两个指针,一个指向原来字符串末尾len处,一个指向替换后总长度的末尾len1处。
(4) p1向前移动依次把经历的字符串放置p2所指位置,p2赋值后前移一位,直到p1遇到空格,此时p2处插入%20并前移三个。然后重复,直到p1=p2结束
void ReplaceBlank(char string[],int length)
{
//length表示字符数组的总容量
if(string==NULL||length<=0)
return;//不合法的参数传入
int originallen=0,numberofblank=0;
//计算字符串总长度和空格个数
int i=0;
while(string[i]!='\0')
{
if(string[i]==' ')
numberofblank++;
++originallen;
i++;
}
//计算新字符串长度
int newlength=originallen+numberofblank*2;
if(newlength>length)
return;//当替换后的长度大于总容量时无法替换
int neworiginal=originallen;
while(neworiginal>=0&&newlength!=neworiginal)
{
//开始字符串的移动和替换
if(string[neworiginal]==' ')
{
//遇到空格时用%20替换
string[newlength--]='0';
string[newlength--]='2';
string[newlength--]='%';
}
else{
//字符串移动
stringstring[newlength--]=string[neworiginal];
}
neworiginal--;//前移
}
}