C语言中strcat和strncat函数介绍及模拟实现

目录

strcat函数介绍

strncat函数介绍

 strcat函数模拟实现

strncat函数模拟实现


strcat函数介绍

strcat和strncat都是C语言的字符串操作函数,用来将一个字符串拼接到另一个字符串后面。

strcat函数的原型是: 

char *strcat(char *dest, const char *src);

它将字符串src拼接到字符串dest的末尾,并返回拼接后的字符串dest。函数中的dest和src两个参数都是指向字符串的指针。

strncat函数介绍

strncat函数的原型是:

char *strncat(char *dest, const char *src, size_t n);

它将src字符串的前n个字符拼接到dest字符串的末尾,并返回拼接后的字符串dest。函数中的dest和src两个参数都是指向字符串的指针,n是要拼接的字符数。

需要注意的是,strncat函数会在拼接字符之后自动添加一个字符串结束符'\0'。所以在拼接之前,dest字符串的末尾必须有足够的空间来存放拼接后的结果。

另外,strncat函数还能够处理src字符串长度小于n的情况,它会将src字符串的所有字符都拼接到dest字符串的末尾。

 strcat函数模拟实现

实现步骤

1.找到dest字符串的'\0'

2.从dest的'\0'位置开始,拷贝src字符串,直到src字符串的'\0'

代码如下

char* my_strcat(char* dest, const char* src)
{
	//判空
	assert(dest && src);

	char* ret = dest;//记录目标空间dest的起始地址
	//1.找到dest的'\0'
	while (*dest != '\0')
	{
		dest++;
	}
	//2.拷贝src字符串,直至'\0'
	while (*dest++ = *src++)//后置++,两个指针往后走,但是先将src中的字符拷贝到dest中
		;//直到src中的\0拷贝到dest时,'\0'是整个表达的结果,跳出循环
	return ret;//返回dest的起始地址,不能直接返回dest,此时的dest已经不是起始位置
}

测试代码及运行截图

int main()
{
	char str1[100] = "hello ";
	char str2[] = "world";
	my_strcat(str1,str2);
	printf("%s\n", str1);
}

strncat函数模拟实现

strncat函数仅仅比strcat函数多一个参数size_t n,用来限制拼接的字符个数,在strcat函数模拟实现的代码稍作修改即可。

代码如下 

char* my_strncat(char* dest, const char* src, size_t n)
{
	//判空
	assert(dest && src);

	char* ret = dest;
	//1.找到dest的'\0'
	while (*dest != '\0')
	{
		dest++;
	}
	//2.拷贝src字符串中n个字符
	while (n && (*dest++ = *src++))//n等于0或直到\0拷贝到目标空间中,跳出循环
	{
		n--;
		if (n == 0)//在dest字符串末尾追加'\0'
		{
			*dest = '\0';
		}
	}
	return ret;
}

 测试代码

int main()
{
	char str1[100] = "hello ";
	char str2[100] = "world";
	my_strncat(str1,str2, 2);
	printf("%s\n", str1);
}

运行截图

以上就是所有关于strcat和strncat的函数介绍和模拟实现。

感谢各位读者! 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值