c语言字符串替换 20,将字符串中的空格替换为%20

------------------------------------------------------------------------------------------------------

例如:有字符串we are family,实现后的字符串为we%20are%20family。

如果从前向后,遇空格替换空格,那么family必将向后移动两次;那么我们可以从后向前实现,

先预留足够的空间,先移动family,再移动are,遇空格填充即可。

------------------------------------------------------------------------------------------------------

C语言代码:# include 

# include 

# include 

# include 

# define MAX 50

void insert(char *p)

{

assert(p);

char *pstart = NULL;

char *pend = NULL;

int black = 0;

int size = strlen(p);

pstart = p + size;

while (*p)                         //统计预留空格数

{

if (*p == ' ')

{

black++;

}

p++;

}

pend = pstart + (black * 2);

while (pstart 

{

if (*pstart != ' ')

{

*pend = *pstart;

pstart--;

pend--;

}

else

{

*pend-- = '0';

*pend-- = '2';

*pend-- = '%';

*pstart--;

}

}

}

int main()

{

char str[MAX] = "";

printf("请输入字符串:");

gets(str);

insert(str);

printf("%s\n",str);

system("pause");

return 0;

}

------------------------------------------------------------------------------------------------------

干活小知识:循环语句,应当将最长的循环放在最内层,最短的放在最外层,以减少CPU跨切循环层数,建议for循环的循环控制变量采取“半开半闭”的写法。

------------------------------------------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值