冬瓜头学编程第一站——替换空格

文章讨论了在C语言中如何正确替换字符串中的空格为%20,指出直接替换会导致数组越界,应创建新数组存储替换后的内容。在动态分配内存时要注意数组大小需在编译时确定,并确保在字符串末尾添加终止符。
摘要由CSDN通过智能技术生成

题目描述:写一个函数,实现将字符串中的空格替换为"%20"。

        拿到题目的第一想法:果然是简单题,这不几行就给写出来了,直接遍历字符串然后替换不就好了嘛(可能好久没有正正经经写C了,理所当然认为替换就可以了,实在是python的字符串相加太香了)

        结果可想而知,根本不行,C里面怎么能用三个字符替换一个字符呢!(数组会越界)

 所以,最简单的方法还是建立一个新的数组去存变化后的字符串,这样就能根据字符串的长度变化来设置了。

这一步还是比较简单的,记录一下新的字符串的长度,然后用于新的数组的建立。 

        接着,我在后面直接定义了一个数组char x[str],理所当然认为这里的x数组长度一定为17。

        大错特错!在C语言中,数组的大小必须在编译时确定,而不能根据运行时的变量来确定,编译器是无法确定数组的大小。

        所以,咱们就只能采取分配空间的方法,结果如下:

        记住哦,在字符串结尾要加上一个 '\0' ,否则的话字符串的遍历就无法终止了。(中间的malloc分配空间只要大于所需就可以了,这个分配空间并不会限定最终数组的大小)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值