将字符串中的空格变成%20如“we are happy ”变成“we - 主打产品 - 新余市思创暖通工贸有限公司
现在的位置: 主页 > 主打产品 > 文章正文
将字符串中的空格变成%20如“we are happy ”变成“we
作者:新余市思创暖通工贸有限公司 来源:www.jxsichuang.com 发布时间:2017-09-08 20:54:25
将字符串中的空格变成%20如“we are happy ”变成“we%20are%20happy”

将字符串中的空格替换成三个字符'%','2','0';

一、创建另一个数组就太简单了,将字符串str的内容复制到新的数组中,当遇到‘ ’时就将输出%20;如果没有空格就将原字符串中的字符复制过来就好了;

二、计算出字符串中的空格数,然后将代替后的字符串长度算出来,因为代替时会将原字符串中的字符覆盖掉,因此我们应该遍历时遇到空格就将它后面的字符向后移两位,这样就可以将%20放进去,但是由于每次遇到空格都向后移一次,那么就没有效率,因此我们可以将最后一个字符一次移到最后。

步骤是这样的:

算出来字符串有13个字符('\0'),加上要代替的空格的空间,一共13+2*2=17个,那么我们可以将原来的长度赋值给oldlen=13,新长度赋值给newlen=17;

先将字符串的最后一个字符移到最后一个空间里,即‘\0’移到newlen的位置;

然后将‘y’移到倒数第二个位置,依次移动,当遇到 ‘ ’时先将'0'放进空格应该移到的位置,然后将'2''%'依次放入,之后继续将空格前面的一个字符移到'%'前面的位置;依次移动直到移动完为止;

代码如下:

#include<stdio.h> #include<assert.h> #include<string.h> void replace_black(char *str) { char *pstr=str; int oldlen=strlen(str); int newlen=0; int count=0; while(*pstr) { if(*pstr==' ') count ++; pstr++; } newlen=oldlen+2*count; while(oldlen < newlen) { if(str[oldlen]==' ') { str[newlen--] = '0'; str[newlen--] = '2'; str[newlen--] = '%'; oldlen--; } else str[newlen--]=str[oldlen--]; } } int main() { char str[20]="we are happy"; replace_black(str); printf("%s",str); return 0; }

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:武汉SEO http://wuhan.raoyu.net


  • 上一篇:关于理解数组与指针
  • 下一篇:最后一页
  • 
    COPYRIGHT © 2015 新余市思创暖通工贸有限公司 ALL RIGHTS RESERVED.
    本站所有原创信息,未经许可请勿任意转载或复制使用 网站地图 技术支持:肥猫科技
    精彩专题:网站建设
    购买本站友情链接、项目合作请联系客服QQ:2500-38-100