题目:请实现一个函数,把字符串中的每个空格替换成"%20",例如“We are happy.”,则输出“We%20are%20happy.”。
/*
string 内存应该足够长以存放替换后的字符串,否则会出现内存越界。
*/
void replaceBlank( char * string )
{
if( NULL == string ) // 判断 string 入参是否为空。 为空则直接结束
return;
char *p, *q;
int iBlankNum = 0; // 用以记录空格数量
p = string;
while( '\0' != *p ) // 计算有多少个空格,并把指针p移动至字符串末尾'\0'
{
if( ' ' == *p )
++iBlankNum;
p++;
}
if( 0 == iBlankNum ) // 字符串中没有空格,直接结束
return;
q = p + 2 * iBlankNum; // q 移动至替换后的字符串末尾 ( 2 = strlen("%20") - strlen(" ") )
while( p >= string ) // 遇见空格填充 "%20", 遇见其它字符复制
{
if( ' ' != *p )
*q-- = *p--;
else
{
p--;
*q-- = '0';
*q-- = '2';
*q-- = '%';
}
}
}