模拟实现字符串函数(6):strncat

1.函数介绍

翻译一下:就是当源字符串长度小于num时会只追加源字符串的最大长度,大于num时正常追加

2.思路分析

1.首先将dest的指针保留用于返回,随后遍历到dest的末尾;

2.判断一下num是否大于src的长度,如果小于的话,将src遍历追加完即可。

复制代码
char* my_strncat(char* dest, char* src, size_t num)
{
	char* ret = dest;
	while (*dest)
	{
		dest++;
	}
	//源字符串长度大于num
	if (strlen(src) >= num)
	{
		while (num--)
		{
			*dest++ = *src++;
		}
	}
	else
	{
		while (*src != '\0')
		{
			*dest++ = *src++;
		}

	}
	return ret;
}

int main()
{
	char str1[30] = "abcdefghij";
	char str2[] = "aaattttt";
	my_strncat(str1, str2, 5);
	printf("%s\n", str1);
	return 0;
}
相关推荐
嵌入小生00715 小时前
进程(2)---相关函数接口、消亡、exec函数族 | 嵌入式(Linux)
linux·c语言·嵌入式·进程·函数接口·exec函数族·进程的消亡
枫叶丹416 小时前
【Qt开发】Qt界面优化(三)-> Qt样式表(QSS) 设置方式
c语言·开发语言·c++·qt·系统架构
myron668816 小时前
基于STM32LXXX的模数转换芯片ADC(ADS1220IPWR)驱动C程序设计
c语言·stm32·嵌入式硬件
StandbyTime16 小时前
C语言学习-菜鸟教程C经典100例-练习71
c语言
C++ 老炮儿的技术栈17 小时前
万物皆文件:Linux 抽象哲学的开发之美
c语言·开发语言·c++·qt·算法
载数而行52017 小时前
数据结构系列15之图的存储方式2
c语言·数据结构·c++
IvanCodes17 小时前
八、C语言构造类型
c语言·开发语言
悲伤小伞18 小时前
Linux_应用层自定义协议与序列化——网络计算器
linux·服务器·c语言·c++·ubuntu
IvanCodes19 小时前
九、C语言动态内存管理
c语言·开发语言·算法
myron668819 小时前
基于STM32LXXX的模数转换芯片ADC(CS1237-SOP8)驱动C程序设计
c语言·stm32·嵌入式硬件