浅谈strcpy()实现

strcpy 覆盖拷贝

  1. 被拷贝的字符串必须以’\0’结束。

  2. 目标空间要足够大,至少要能放的下拷贝的东西。

  3. 目标空间的值是可以修改,比如常量区的字符串,不能够修改,就不能使用。

  4. 会将被拷贝的字符串中的’\0’拷贝到目标空间。

  5. 函数实现。
    方法一

     char* my_strcpy(char* dst, const char* src)
     {
     	const ret = dst;
     	while (*src)
     	{
     		*dst = *src;
     		dst++;
     		src++;
     	}
     	*dst = '\0';
     	return ret;
     }
    

       ret记录字符串的首地址,将函数的返回值设置成为一个char*,是为了在调用函数的时候可以像my_strcpy(str1, my_strcpy(str1, p1));这样嵌套,由于strcpy拷贝是拷贝’\0’的,因此在最后,我们需要吧*dst最后所指向的内容改为’\0’。
    方法二

     char* my_strcpy(char* dst, const char* src)
     {
     	const ret = dst;
     	//先赋值,再判断,只要不是\0,代码就继续
     	while (*dst++ = *src++);
     	return ret;
     }		
    

      方法二就相对方法一进行了简化,采用前置++的方式,前置++的优先级高于*,因此没循环一次,指针向后移一下,再将src的值赋给dst。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天津 唐秙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值