替换空格
把字符串中的每个空格替换成"%20"
思路:
空格一个字符,替换后变成3个字符,因此字符串变长了,应该从后向前替换。
参考答案:
#include <stdio.h>
void replaceBlank(char* str,int len)
{
if(str ==NULL || len <=0) return;
int originalLen = 0;
int numofBlank = 0;
int i = 0;
while(str[i] != '\0')
{
originalLen++;
if(str[i] == ' ') numofBlank++;
i++;
}
int newLen = originalLen + 2*numofBlank;
if(newLen > len) return;
int indexofOriginal = originalLen;
int indexofNew = newLen;
while(indexofOriginal >0 && indexofNew > indexofOriginal)
{
if(str[indexofOriginal] == ' ')
{
str[indexofNew--] = '0';
str[indexofNew--] = '2';
str[indexofNew--] = '%';
}
else
str[indexofNew--] = str[indexofOriginal];
indexofOriginal--;
}
}
int main()
{
char str[100]="abcde fghij lmnop";
replaceBlank(str,100);
printf("str=%s",str);
return 0;
}