模拟实现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;
}
相关推荐
_不会dp不改名_27 分钟前
leetcode_3010 将数组分成最小总代价的子数组 I
算法·leetcode·职场和发展
带土138 分钟前
10. .out文件
linux
STCNXPARM1 小时前
Linux camera之V4L2子系统详解
android·linux·camera·v4l2架构
yueyuexiaokeai11 小时前
linux kernel常用函数整理
linux·c语言
你撅嘴真丑2 小时前
字符环 与 变换的矩阵
算法
早点睡觉好了2 小时前
重排序 (Re-ranking) 算法详解
算法·ai·rag
gihigo19982 小时前
基于全局自适应动态规划(GADP)的MATLAB实现方案
算法
郝亚军3 小时前
ubuntu-18.04.6-desktop-amd64安装步骤
linux·运维·ubuntu
Konwledging3 小时前
kernel-devel_kernel-headers_libmodules
linux
Web极客码3 小时前
CentOS 7.x如何快速升级到CentOS 7.9
linux·运维·centos