模拟实现strncpy

介绍strncpy

strncpy的原型:char *strncpy( char *strDest, const char *strSource, size_t count );

既然要模拟,那就要先搞清楚原型是什么意思,Dest是目的地,Source是源头,count是要复制过去数目的多少。

创建数组

模拟(创建一个函数)

在原型中,函数的第一个参数是目的地,arr1就是我的目的地,arr2是我的源头,3是我的数目。

切记,复制的源头一定不能超过目的地。

一旦超过,在模拟实现的函数中,目的地最多有多少个空间,就只能复制多少个。

而在strncpy中,如果超过,结果也是一样的

函数内部

因为arr1是会变动的,而arr2是源头则不会变动。

那思路就很清楚了,我们可以先让*s1(arr1)赋值到一个指针。

然后arr1 *(s1)每次加一等于arr2 * (s2)每次加一。

多少次呢?

就是我们的 K,所以我们要用到while循环。

这就完成了strncpy的模拟实现。

注意

还记得我们为什么要把s1赋值到一个指针里吗?

因为*s1是一直在跑的,
*s1的位置一直在往后走
前面的地址没记录就丢失了
如果返回的*s1当前的地址,也就是从第四个字符开始到结尾

打印的值就会像这样,只有8个x,前面3个丢失了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值