模拟实现strcpy。全网最优质的实现库函数strcpy,高质量短小代码实现strcpy

先说一下传统的方式:

1,创建函数,参数是指针变量,用来接收字符串的地址,把字符串2 copy到 字符串1里面。

(这是一种土味方法,可以应付期末考试。也仅仅于此了。)

**********用循环,把后面的字符串一个一个copy到前面一个字符串中,然后地址慢慢往后挪一个地址。。。知道挪到\0,循环结束。。但是\0没有copy进去,所以最后再加一步,把\0 copy进去。。

下面这是精细改良版本了,可以预防各种突发事件,以及消除各种潜在的错误。(堪称腾讯,字节程序员的标配代码。。。。)

1,聪明的人会想到,反正是后置++,不如把++放在上面,岂不是省事一些? 没错,合理的。

2,又有聪明的人会想到,上面copy字符串内容,下面一句copy  '\0'这个字符,会不会还是麻烦。直接放在循环条件里,那样万事大吉了,一下都copy进来。省事的很。没错,合理的。

 (别看这个很扯淡,这个是对的,你们运行就知道了,完全没问题的)

3,还是感觉不够好,万一有人手误,传了一个空指针过去怎么办,这种隐患得考虑进去啊,

 加了assert函数之后,如果穿了空指针过去,会准确报错,并且精准的找到错误所在的地方。

举个例子:

 这传了一个空指针了,结果如下

 准确的定位错误所在地方,非常方便

4最后,当然了,这是终极版本,基本找不到漏洞了。。函数是把start 拷贝到desrt里面,大伙别整反了奥

 上面加了const,大伙知道啥意思吧,常量,使*start不能修改,防止大家,把dest的拷贝到start中,房子大家搞反了。直接加const,固定住start里面的东西,是不可修改的。。不妨碍把里面东西拷贝到dest里面,,,dest是可以修改的。。。

最后这一张是终极最好的版本啊,大伙别看错了。。。。。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值