模拟实现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;
}
相关推荐
老鼠只爱大米2 小时前
LeetCode算法题详解 15:三数之和
算法·leetcode·双指针·三数之和·分治法·three sum
客卿1232 小时前
C语言刷题--合并有序数组
java·c语言·算法
Qhumaing2 小时前
C++学习:【PTA】数据结构 7-1 实验6-1(图-邻接矩阵)
c++·学习·算法
郝学胜-神的一滴2 小时前
深入理解Linux中的Try锁机制
linux·服务器·开发语言·c++·程序人生
菜鸟233号2 小时前
力扣416 分割等和子串 java实现
java·数据结构·算法·leetcode
sim20202 小时前
把etcd分区挂到SSD盘
linux·etcd
Swift社区2 小时前
LeetCode 469 凸多边形
算法·leetcode·职场和发展
EndingCoder2 小时前
函数基础:参数和返回类型
linux·前端·ubuntu·typescript
chilavert3182 小时前
技术演进中的开发沉思-298 计算机原理:算法的本质
算法·计算机原理
Aaron15882 小时前
全频段SDR干扰源模块设计
人工智能·嵌入式硬件·算法·fpga开发·硬件架构·信息与通信·基带工程