C語言:字符串替換空格:請實現一個函數,把字符串中的每個空格替換成“%20”。
從前往後:在原基礎上進行替換(當然前提是空間足夠),如果從前往後遇到空格就替換,必然會對原來的字符造成覆蓋,不可以實現。
因為把空格替換為”%20“,每次替換多2個字符,因此可以統計出字符串中空格的總個數,然後新數組大小為 “原數組大小 + 2*空格數 ”。從後往前處理:遇到非空格,直接搬到後面,遇到空格替換為”%20“. 直到待插入位置指針和原數組為指針重合位置。
#include<stdio.h>
#include<string.h>
int main()
{
char arr[] = "we are happy.";
int i = 0;
int j = 0;
int len = 0;
int count = 0;
len = strlen(arr);
for(i = 0;i < len;i++)
{
if(arr[i] == ' ')
{
count ++;
}
}
i = len;
j = 2 * count + len;
while(i != j && i >= 0)
{
if(arr[i] == ' ')
{
arr[j--] = '0';
arr[j--] = '2';
arr[j--] = '%';
i--;
}
else
{
arr[j] = arr[i];
j--;
i--;
}
}
len = strlen(arr);
for(i = 0; i< len ;i++)
{
printf("%c",arr[i]);
}
printf("\n");
return 0;
}