string库之模拟实现strcat与strncat

原型:

    C库string.h中的strcat函数

描述:

    C 库函数 char *strcat(char *dest, const char *src) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。

参数:

    dest:指向目标数组,该数组包含了一个 C 字符串,且足够容纳追加后的字符串。

    src:指向要追加的字符串,该字符串不会覆盖目标字符串。

返回值:

    该函数返回一个指向最终的目标字符串 dest 的指针。

模拟实现strcat:

char *my_strcat(char *dest, const char *src)
{
	char *start = dest;

	assert(NULL != dest);
	assert(NULL != src);

	while (*dest++) //找到dest字符串结尾'\0'
		;

	--dest; //dest往前移一步,使得下面赋值时,'\0'被*src覆盖。

	while (*dest++ = *src++)
		;

	return start;
}




原型:

    C库string.h中的strncat函数

描述:

    C 库函数 char *strncat(char *dest, const char *src, size_t n) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾,直到 n 字符长度为止。

参数:

    dest:指向目标数组,该数组包含了一个 C 字符串,且足够容纳追加后的字符串,包括额外的空字符。

    src:指向要追加的字符串,该字符串不会覆盖目标字符串。

    n:n -- 要追加的最大字符数。

返回值:

    该函数返回一个指向最终的目标字符串 dest 的指针。

模拟实现strncat:

char *my_strncat(char *dest, const char *src, size_t n)
{
	char *start = dest;

	assert(NULL != dest);
	assert(NULL != src);

	while (*dest++) //找到dest字符串尾部'\0'
		;

	--dest; //dest往前移一步,使得下面赋值时,'\0'被*src覆盖。

	while (n-- && (*dest++ = *src++)) //多了个计数器n
		;

	return start;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值