请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
没啥难度, 问题重点就是开辟新空间的大小. 我的方法是每次拷贝原数组的时候再多申请一个空间, 遇到空格多申请4个空间.
char* replaceSpace(char* s){
int j = 0;
char *result = (char*)malloc(sizeof(char) * (j+1)); //预留1个空位,放新元素
for(int i = 0; s[i]!=0;i++)
{
if(s[i]!= ' ')
{
result[j++] = s[i];
result = realloc(result, sizeof(char) * (j+1));
}
if(s[i] == ' ')
{
result = realloc(result, sizeof(char) * (j+3));//先多开辟两个空间, 这样就有预留的%20
result[j++] = '%';result[j++] = '2';result[j++] = '0';
result = realloc(result, sizeof(char) * (j+1));
}
}
//追加\0
result[j] = 0;
return result;
}
网友评论