C:模拟实现strncpy,strncat,strncmp

Strncpy

Strncpy的函数功能与Strcpy相似,都是实现字符串的拷贝,但Strncpy可以指定拷贝的个数,这里有一点需要注意,如果指定的拷贝个数大于拷贝源的元素个数,那麽strncpy就会自动补\0,和Strcpy实现思路的不同也就在这里:

char* my_strcnpy(char*dest ,const char*src,unsigned int num)//注意:num大于src里的元素个数自动补0;
{
	char* ret= dest;
	assert(dest&&src);
	while (num--)
	{
		if (*src != '\0')
		{
			*dest++ = *src++;
		}
		else
		{
			*dest++ = '\0';
		}
	}
	return ret;
}
Strncat

Strncat也是在strcat得出上可以限制添加字符的个数。注意:这里的指定数如果大于源数组的元素个数,并不会补\0
详细程序:

char* my_strncat(char* dest,const char* src, unsigned int num)//注意:num大于src里的元素个数并不补零;
{
	assert(dest&&src);
	char* ret = dest;
	while (*dest != '\0')
	{
		dest++;
	}
	while ((*dest++ = *src++) && (--num))//这里--num是因为在num=0时前面的dest和Scr还要再判断赋值一次;nun--会多运行一次
	{
		;
	}
	return ret;
}
Strcmp

只在给定的字符数之前进行判断,如果这些字符都一样,就默认字符相等

int my_strncmp(const char* arr1,const char*arr2,unsigned int num)
{
	assert(arr1&&arr2);
	while (*arr1==*arr2&&--num)
	{
			arr1++;
			arr2++;
	}
	return *arr1 - *arr2;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值