将空格转换成%20
2015-09-09 20:58
232 查看
字符串替换空格:请实现一个函数,把字符串中的每个空格替换成“%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;
}
字符串替换空格:请实现一个函数,把字符串中的每个空格替换成“%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;
}
相关文章推荐
- 关于数组
- Windows 10 录音上的一个问题
- C++用法的学习心得(要求包含示例,并反映出利用网络获取帮助的过程)
- java面向对象的编程
- MasonryExample
- Thinkphp更换模板主题
- 上转型对象的使用
- 关于 setBackgroundImage 和 setImage
- 文件操作
- 什么是开发中经常说的POCO
- tomcat server.xml配置介绍
- 容器视图控制器
- UVA 11324 The Largest Clique (拆点+KM)
- 【IO】同步,异步,阻塞,非阻塞 (亡羊补牢篇)
- 【Beijing wc2012】【BZOJ2659】算不出的算式
- qrencode二维码生成在linux下的编译(转)
- Linux 文件查看常用命令
- POJ - 1751 Highways(最小生成树)
- VC模拟文件拖拽
- 增序顺序储存线性表的基本操作