实现Strcpy(字符串拷贝)

字符串拷贝(不考虑内存重叠)

char* myStrcpy(char* destStr,const char* str)
{
	//字符串有有效性检查,assert断言返回false则中止程序运行
	assert(destStr != NULL || str != NULL);
	char* temp = destStr;
	//while((*destStr++ = *str++) !='\0');
	//将str赋值给destStr,判断destStr !='\0',条件成立则说明字符串拷贝结束(字符串以'\0'结尾)
	while((*destStr = *str) !='\0')
	{
		str++;
		destStr++;
	}
	return temp;
}

字符串拷贝(内存重叠)

1.destStr 指向拷贝后的字符串
2. str 指向原字符串
3.cnt 字符串长度

char* myStrcpy(char* destStr,const char* str,int cnt)
{
	//字符串有有效性检查,assert断言返回false则中止程序运行
	assert(destStr != NULL || str != NULL);
	char* temp = destStr;
	if (destStr>= str&& destStr<= str+cnt-1) //内存重叠,从高地址开始复制
    {
        destStr= destStr+cnt-1;
        str= str+cnt-1;
        while (cnt--)
            *destStr-- = *str--;
    }
    else    //正常情况,从低地址开始复制
    {
        while (cnt--)
            *destStr++ = *str++;
    }
	return temp;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值