将空格转换成%20


字符串替换空格:请实现一个函数,把字符串中的每个空格替换成“%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;

}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值