您的位置:首页 > 其它

字符串替换空格的两种方法

2016-07-20 17:34 316 查看
从"we are happy."---->"we%20are%20happy."

代码一:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>

void replace_black(char arr[],int sz)
{
int i=0;
int len=0;
for(i=0; i<sz; i++)
{
if(arr[i] == ' ')//统计字符串中的空格数
len+=2;
}
len+=sz;
while(sz<len)
{
if(arr[sz] != ' ')
{
arr[len]=arr[sz];
sz--;
len--;
}
else
{
arr[len--]='0';
arr[len--]='2';
arr[len--]='%';
sz--;
}
}
}
int main()
{
char arr[]="you are a pig.";
int sz=sizeof(arr)/sizeof(arr[0])-1;
replace_black(arr,sz);
printf("%s\n",arr);
system("pause");
return 0;
}


代码二:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<malloc.h>

char *replace_black(char *str,int sz,int count)
{
char *pa=(char *)malloc((sz+count*2)*sizeof(char));//动态开辟出一块空间
char *ret=pa;
if(NULL == pa)//判断内存开辟是否成功
{
printf("out of memory.\n");
exit(1);
}
assert(str);
while(*str != '\0')
{
if(*str == ' ')//
{
*pa++='%';
*pa++='2';
*pa++='0';
str++;
}
else
{
*pa=*str;
pa++;
str++;
}
}
*pa='\0';
return ret;
}
int main()
{
char arr[]="we are happy.";
int sz=sizeof(arr)/sizeof(arr[0]);
char *ret={0};
int i=0;
int count=0;
for(i=0; i<sz; i++)
{
if(arr[i] == ' ')//统计字符串中的空格数
count++;
}
ret=replace_black(arr,sz,count);
printf("%s\n",ret);
free(ret);//释放所开辟的空间
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: