模拟实现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;
}
相关推荐
杨恒9815 小时前
GESPC++三级编程题 知识点
数据结构·c++·算法
koping_wu15 小时前
【leetcode】排序数组:快速排序、堆排序、归并排序
java·算法·leetcode
X.Ming 同学15 小时前
QXlsx 库在麒麟 Linux(Qt 5.15.2)下完整安装步骤(含问题排查 & 经验总结)
linux·数据库·qt
小O的算法实验室15 小时前
2025年AEI SCI1区TOP,基于自适应进化算法的城市空中交通多目标枢纽选址,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
杰克崔15 小时前
localtime接口与localtime_r接口
linux·运维·服务器·车载系统
HalvmånEver15 小时前
Linux:简介(进程间通信一)
linux·运维·服务器
历程里程碑15 小时前
LeetCode 283:原地移动零的优雅解法
java·c语言·开发语言·数据结构·c++·算法·leetcode
星火飞码iFlyCode15 小时前
iFlyCode实践规范驱动开发(SDD):招考平台报名相片质量抽检功能开发实战
java·前端·python·算法·ai编程·科大讯飞
leaves falling15 小时前
c语言-根据输入的年份和月份,计算并输出该月份的天数
c语言·开发语言·算法
jghhh0115 小时前
锥束CT(CBCT)三维重构算法:FDK算法详解与实现
线性代数·算法·重构