从"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;
}