用字符串的空格替换其他字符

将字符串中的空格替换成“%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] != '')
    {
        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--;
    }

}
原文地址:https://www.cnblogs.com/TheQi/p/9125903.html