用字符串的空格替换其他字符
将字符串中的空格替换成“%20”,例如“I love you”
替换成“I%20love%20you”
从前向后插入的话可能会令原数组丢失数据,
我能想到的是完全申请一个新的数组,把所有的都插入到新数组中
再拷贝回原数组,这种方法浪费了空间
实际采用的方法是先得到新字符串的下标,从后向前插入,这样就不会把原来的数组覆盖掉了
void aa(char* arr,int length)
{
if(arr == NULL || length <= 0) return;
//原来的字符长度
int oldLength = 0;
//空格的数量
int spaceNum = 0;
int i=0;
while(arr[i] != '\0')
{
oldLength++;
if(arr[i] == ' ')
spaceNum++;
i++;
}
if(oldLength+spaceNum*2 > length) return;
//新的字符长度
int newEnd = oldLength+spaceNum*2;
//原来字符长度
int oldEnd = oldLength;
while(oldEnd != 0)
{
if(arr[oldEnd] != ' ')
arr[newEnd] = arr[oldEnd];
else
{
arr[newEnd--] = '0';
arr[newEnd--] = '2';
arr[newEnd] = '%';
}
newEnd--;
oldEnd--;
}
}