模拟实现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;
}
相关推荐
是阿威啊11 小时前
【第三站】本地虚拟机部署hive集群
linux·数据仓库·hive·hadoop·分布式
算法与编程之美11 小时前
解决tensor的shape不为1,如何转移到CPU的问题
人工智能·python·深度学习·算法·机器学习
natide11 小时前
词汇/表达差异-8-Token Overlap(词元重叠度)
大数据·人工智能·深度学习·算法·自然语言处理·nlp·知识图谱
hetao173383711 小时前
2025-12-22 hetao1733837的笔记
c++·笔记·算法
和光同尘202311 小时前
一文讲透CentOS下安装部署使用MYSQL
linux·运维·数据库·数据仓库·mysql·centos·database
0.0雨11 小时前
设置集群的SSH免密登陆
linux·服务器·ssh
胖咕噜的稞达鸭11 小时前
【Linux系统编程】解密环境变量与进程地址空间
linux·运维·chrome
峰顶听歌的鲸鱼11 小时前
17.docker:监控及日志
linux·运维·docker·容器·云计算
一颗青果11 小时前
Linux下的线程
linux·运维·服务器
wdfk_prog11 小时前
[Linux]学习笔记系列 -- [fs]fs_context
linux·笔记·学习