模拟实现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;
}
相关推荐
cui__OaO3 分钟前
Linux驱动--驱动编译
linux·运维·服务器
多米Domi0119 分钟前
0x3f 第35天 电脑硬盘坏了 +二叉树直径,将有序数组转换为二叉搜索树
java·数据结构·python·算法·leetcode·链表
想逃离铁厂的老铁15 分钟前
Day45 >> 115、不同的子序列 + 583. 两个字符串的删除操作 + 72. 编辑距离
算法·leetcode
cyyt21 分钟前
深度学习周报(1.12~1.18)
人工智能·算法·机器学习
SunnyRivers26 分钟前
深入理解Linux后台命令
linux·后台运行·重定向·nohub
范纹杉想快点毕业26 分钟前
C语言核心机制全解:内存、地址、数组与指针,共计30000字
算法
刘叨叨趣味运维29 分钟前
快速掌握Linux启动过程:像看接力赛一样简单
linux
Q168496451539 分钟前
红帽Linux-进程、ssh、网络、软件包、文件系统
linux·运维·网络
Σίσυφος19001 小时前
RANSAC算法原理与应用
算法
wdfk_prog1 小时前
[Linux]学习笔记系列 -- [drivers][base]cpu
linux·笔记·学习