模拟实现strncpy函数

我们先了解一下这个函数,

1.假如我们要拷贝10个数,但是arr2里面没有10个数,然后多余的数全部拷贝'\0'

2.假如arr2里面有5个数,但是我们只想拷贝3个数,这个函数只会拷贝3个,不会在后面加'\0'

cpp 复制代码
char* my_strcpy(char* str1, const char* str2, size_t k)
{
	assert(str1 && str2);
	char* str = str1;
	while (k && (*str1++ = *str2++))//k--然后str1进行赋值
	{
		k--;
	}
	while (--k)这里是假如我们要拷贝10个数,但是str2里面没有10个数,然后多余的数全部拷贝'\0'
	{
		*str1++ = '\0';
	}
	return str;
}
int main()
{
	char arr1[20] = "xxxxxxxxxxxxxx";
	char arr2[] = "abcd";
	char* ret = my_strcpy(arr1, arr2, 10);
	printf("%s", ret);
	return 0;
}
相关推荐
鱼跃鹰飞12 分钟前
Leetcode尊享面试100题:1060. 有序数组中的缺失元素
算法·leetcode·面试
啊我不会诶16 分钟前
AtCoder Beginner Contest 438 vp补题
算法
computersciencer16 分钟前
用最小二乘法求解一元一次方程模型的参数
算法·机器学习·最小二乘法
mit6.82425 分钟前
扫描线|离散化|seg+二分|卡常
算法
不穿格子的程序员31 分钟前
从零开始写算法——二叉树篇6:二叉树的右视图 + 二叉树展开为链表
java·算法·链表
gtr202035 分钟前
Ubuntu24.04 基于 EtherCAT 的 SVD60N 主站
linux·ethercat
weixin_4624462340 分钟前
ubuntu真机安装tljh jupyterhub支持跨域iframe
linux·运维·ubuntu
小码吃趴菜40 分钟前
select/poll/epoll 核心区别
linux
大志若愚YYZ41 分钟前
ROS2学习 C++中的this指针
c++·学习·算法
Ghost Face...42 分钟前
深入解析网卡驱动开发与移植
linux·驱动开发