将空格转换成%20

来源:互联网 发布:如何成为英雄知乎 编辑:程序博客网 时间:2024/06/06 12:44

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

}


0 0
原创粉丝点击