字符串替换空格:请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“we are happy.”,则输出“we%20are%20happy.”。
方法一:用数组,从前往后复制,遇到空格变成 ,旧数组下标加1,新数组下标加3;
#include
void transfer(char old[])
{
char ne[20]={' '};
int i=0,j=0;
while(old[i]!='\0')
{
if(old[i]!=' ')
{
ne[j]=old[i];
i++;
j++;
}
else
{
ne[j]='%';
ne[j+1]='2';
ne[j+2]='0';
i++;
j+=3;
}
}
printf("%s\n",ne);
}
int main()
{
char p[20]="i am happy";
transfer(p);
return 0;
}
但这种方法效率太低。
方法二:在原来的字符串上实现,定义两个指针oldptr和newptr,从后向前复制。
#include
void replace_blank(char *ptr)
{
int len=0;
int newlen=0;
int blank=0;
char *sptr=ptr;
char *oldptr;
char *newptr;
while(*ptr)
{
if(*ptr==' ')
blank++;
len++;
ptr++;
}
newlen=len+2*blank; //算出最终结果的长度
oldptr=sptr+len-1;
newptr=sptr+newlen-1;
while(oldptr<newptr)
{
if(*oldptr==' ')
{
*newptr--='0';
*newptr--='2';
*newptr--='%';
}
else
{
*newptr=*oldptr;
newptr--;
}
oldptr--;
}
}
int main()
{
char p[30]="we are happy";
replace_blank(p);
printf("%s",p);
return 0;
}