//1.
/*char* replaceSpace(char* s)
{
char* ret = NULL;
char* tmp = NULL;
int count = 0;
char* arr = "%20";
size_t len = strlen(s);
char* k = s;
while (*k != '\0')
{
if (*k == ' ')
{
count++;
}
k++;
}
ret = (char*)malloc(len + 3 * count + 1);
if (ret == NULL)
{
perror("malloc");
return NULL;
}
else
{
tmp = ret;
}
while (*s != '\0')
{
if (*s == ' ')
{
int i = 0;
int j = 0;
char* pr = arr;
for (i = 0; i < 3; i++)
{
*ret = *pr;
j++;
if (j == 3)
{
break;
}
ret++;
pr++;
}
}
else
{
*ret = *s;
}
s++;
ret++;
}
*ret = *s;
return tmp;
}*/
//2.
#include<assert.h>
char* replaceSpace(char* s)
{
assert(s);
int i = 0;
int j = 0;
char* p = s;
int spacecnt = 0;
//计算空格个数
while (*p)
{
if (*p == ' ')
{
spacecnt++;
}
p++;
}
int length = strlen(s);
int newlen = length + spacecnt * 2;
int end1 = length - 1;
int end2 = newlen - 1;
char* r = (char*)malloc(sizeof(char) * newlen + 1);
for(i = end1,j = end2; i >= 0; i--,j--)
{
if(s[i] == ' ')
{
r[j--] = '0';
r[j--] = '2';
r[j] = '%';
}
else
{
r[j] = s[i];
}
}
r[newlen] = '\0';
return r;
}