将字符串数组中的空格转化成20%(例如:把“we are happy.”转化为“we20%are20%happy.”)

来源:互联网 发布:美丽中国网络知识竞赛 编辑:程序博客网 时间:2024/05/22 20:51

分析

在这个程序中,一个空格占一个字节空间,而20%占三个字节,所以直接将空格换成20%肯定是行不通的,

所以就需要对原来的内存进行扩容,将一个空格的字节数增大到三个字节数,所以扩容之后的总字节数为:strlen(str)+2*空格数

扩容完成之后,就到放数据的的问题了,一般大家都会想着从前往后依次把数据放到新的内存里就好了,这样的话就会出现一个问题,当放到20%的时候就会把后面的ar覆盖掉,再往后就会出现错误,所以我们要从后往前存入数据。

以下就是代码实现部分:

#include<stdio.h>#include<string.h>void  *replaceblank(char *buf){int i = 0;int j = 0;int count = 0;for (i = 0; buf[i] != 0; i++){if (buf[i] == ' ')count++;}int newlen = strlen(buf) + 2 * count;i = strlen(buf);j = newlen;for (; i >= 0; i--){if (buf[i] == ' '){buf[j--] = '0';buf[j--] = '2';buf[j--] = '%';}else{buf[j--] = buf[i];}}}int main(){char str[] = "we are happy.";replaceblank(str);printf("%s\n",str);system("pause");return 0;}
运行结果:


阅读全文
0 0
原创粉丝点击