库函数模拟strncpy----C语言实现

关于strncpy函数的介绍

Copy characters from string 将源的第一个字符数复制到目标。如果在复制 num 个字符之前找到源 C
字符串的末尾(由 null 字符表示),则目标将填充零,直到总共写入 num 个字符为止。 如果源长度超过
num,则不会在目标末尾隐式附加空字符。因此,在这种情况下,不应将目标视为以空结尾的 C 字符串(这样读取它会溢出)。

函数的参数

//size_t 
char * strncpy ( char * destination, const char * source, size_t num );

函数的返回值

destination 目的地 is returned. 被返回。

C语言模拟实现

思路:和strcpy的模拟思路类似,考虑俩个条件(‘\0’,和num是否为零)然后复制字符串,最后注意dest是否是’\0’,不是就补上

char* My_strncpy(char* dest, const char* sou, size_t num)
{
	assert(dest || sou);
	char* begin = dest;//定义变量记录目的地的初始地址用力返回
	while (num > 0 && *sou != '\0' )
	{
		*dest++ = *sou++;
		num--;
	}
	while (num)    //这里考虑若sou复制到dest但dest不是'\0'结束
	{
		*dest = '\0';
		num--;
	}
	return begin;
}

关于strncat函数介绍

将源的第一个数字字符追加到目标,外加一个终止空字符。 如果源中 C 字符串的长度小于 num,则仅复制终止空字符之前的内容.

函数的参数

char * strncat ( char * destination, const char * source, size_t num );

函数的返回值

destination 目的地 is returned. 被返回。

C语言模拟实现

思路:原理类似strncpy,只是从原有的字符上再进行拷贝

char* My_strncat(char* dest, const char* sou, size_t n)
{
	assert(dest&& sou);
	char* ptr = dest;
	while (*dest != '\0')
	{
		dest++;
	}
	while (n > 0 && *sou != '\0')
	{
		*dest++ = *sou++;
		n--;
	}
	while(n)
	{
		*dest++ = '\0';
	}
	return ptr;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值