模拟实现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 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
通信小呆呆2 小时前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
bush43 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
benben0443 小时前
强化学习之DQN算法族(基于gymnasium开发)
算法
载数而行5203 小时前
Linux 11 动态监控指令top
linux
何以解忧,唯有..4 小时前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
不会C语言的男孩4 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
古城小栈4 小时前
Unix 与 Linux 异同小叙
linux·服务器·unix
想吃火锅10055 小时前
【leetcode】88.合并两个有序数组js
算法