模拟实现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;
}
相关推荐
源梦想3 分钟前
机甲恐龙动作冒险网页小游戏Linux部署教程
linux·运维·服务器
AKDreamer_HeXY3 分钟前
ABC434E 题解
c++·算法·图论·atcoder
罗湖老棍子3 分钟前
完全背包 vs 多重背包的优化逻辑
c++·算法·动态规划·背包
TL滕4 分钟前
从0开始学算法——第四天(题目参考答案)
数据结构·笔记·python·学习·算法
Hoshino.4113 分钟前
从0开始学习Linux——第七部分:DNS(1)
linux·网络·学习
potato_may14 分钟前
C++ 发展简史与核心语法入门
开发语言·c++·算法
Liangwei Lin16 分钟前
洛谷 P1443 马的遍历
数据结构·算法
老鱼说AI17 分钟前
算法基础教学第二步:数组(超级详细原理级别讲解)
数据结构·神经网络·算法·链表
yiyeguzhou10019 分钟前
论文解读:Overcoming the IOTLB wall for multi-100-Gbps Linux-based networking
linux·运维·服务器
Y淑滢潇潇24 分钟前
RHCE Day 7 SHELL概述和基本功能
linux·前端·rhce