模拟实现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;
}
相关推荐
helloworldandy16 分钟前
高性能图像处理库
开发语言·c++·算法
2401_8365631817 分钟前
C++中的枚举类高级用法
开发语言·c++·算法
浪客灿心18 分钟前
Linux库制作与原理
linux·运维·服务器
bantinghy20 分钟前
Nginx基础加权轮询负载均衡算法
服务器·算法·nginx·负载均衡
成为你的宁宁25 分钟前
【Linux Swap 交换分区:定义、作用与操作指南】
linux·交换分区
chao18984428 分钟前
矢量拟合算法在网络参数有理式拟合中的应用
开发语言·算法
代码无bug抓狂人34 分钟前
动态规划(附带入门例题)
c语言·算法·动态规划
weixin_445402301 小时前
C++中的命令模式变体
开发语言·c++·算法
季明洵1 小时前
C语言实现顺序表
数据结构·算法·c·顺序表
Hgfdsaqwr1 小时前
实时控制系统优化
开发语言·c++·算法