请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy.”,则输出“We%20are%20happy.”。
我们可以先遍历一次字符串,这样就能统计出字符串中空格的总数,并可以由此计算出替换之后的字符串的总长度。每替换一个空格,长度增加2,因此替换以后字符串的长度等于原来的长度加上2乘以空格数目。我们从字符串的后面开始复制和替换。
#include<iostream.h>
void replaceblank(char *str,int length)
{
if(str==NULL||length<0)
return;
int blanknum=0,originallength=0,i=0;
while(str[i]!='\0')
{
++originallength;
if(str[i]==' ')
++blanknum;
++i;
}
int newlength=originallength+blanknum*2;
if(newlength>length)
return;
int oldindex=originallength-1,newindex=newlength-1;
while(oldindex>=0&&oldindex<=newindex)
{
if(str[oldindex]!=' ')
str[newindex--]=str[oldindex];
else
{
str[newindex--]='0';
str[newindex--]='2';
str[newindex--]='%';
}
--oldindex;
}
}
void main()
{
char str[20]="We are happy.";
replaceblank(str,sizeof(str));
cout<<str<<endl;
}