模拟实现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;
}
相关推荐
旖-旎几秒前
分治(交易逆序对的总数)(6)
c++·算法·leetcode·排序算法·归并排序
北顾笙980几秒前
day14-数据结构力扣
数据结构·算法·leetcode
Ln5x9qZC29 分钟前
尾递归与Continuation
算法
一路向北he9 分钟前
esp32库依赖
c语言·c++·算法
老四啊laosi9 分钟前
[双指针] 6. 查找总价为目标值的两个商品
算法·力扣·总价为目标值得两商品
Hello World . .12 分钟前
Linux:Linux命令行音视频播放器
linux·音视频
YYYing.21 分钟前
【Linux/C++网络篇(二) 】TCP并发服务器演进史:从多进程到Epoll的进化指南
linux·服务器·网络·c++·tcp/ip
人间寥寥情难诉26 分钟前
LRU算法本地实现
java·算法·spring
moonsea020328 分钟前
2026.4.2
开发语言·c++·算法
SPC的存折28 分钟前
10、Ansible 生产级故障排查与运维最佳实践
linux·运维·ansible