模拟实现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;
}
相关推荐
虚无的纽扣7 小时前
【Linux】每个进程都拥有“假内存” | 进程地址空间详解
linux·运维·服务器
沉淀的.晴天7 小时前
FreeRTOS信号量
数据结构·算法
拂拉氏8 小时前
【知识讲解】 Linux进程的回收相关接口了解
linux·进程回收
青山木8 小时前
Hot 100 --- 打家劫舍
java·数据结构·算法·leetcode·动态规划
新时代牛马8 小时前
PCI与PCIe 完整篇:硬件拓扑→ 报文协议→配置/BAR → Linux 驱动(一条主线讲透)
linux·运维·网络
筝筝ba8 小时前
如何跳过FFDC
xml·linux·运维·服务器·网络
机器学习之心8 小时前
均值、中值、圆周期:三种 InSAR 干涉相位滤波的实测对比与参数取舍
算法·均值算法
xy20268 小时前
多轮 Tool Agent 训不动?先把环境 token 从 loss 里拿掉
算法
赴生-8 小时前
Liunx 操作系统 进程概念(下)
linux
风静如云8 小时前
VMWare:Ubuntu(26.04)共享后看不到
linux