欢迎来到代码驿站!

C代码

当前位置:首页 > 软件编程 > C代码

彻底掌握C语言strcat函数的用法

时间:2023-01-14 11:32:24|栏目:C代码|点击:

strcat函数详解如下

1.函数介绍

1.1.函数接口

char* __cdecl strcat (char * dst, const char * src);

这里是库函数里面的函数定义接口。这个函数是将字符串src连接到dst中去,就是连接字符串函数。

1.2.函数分析

分析:

1、dst 和 src 字符串结尾都必须含有 ’ \0 ';

2、dst 字符串是可变的,不能用 const 修饰;src 可以用 const 修饰。

3、就是 dst 目标字符串的空间必须足够大。

4、该函数返回值是字符指针类型。

1.3.函数的简单使用

代码展示如下:

int main()
{
	char ch1[20] = "Hello";
	char ch2[] = "World";
	strcat(ch1, ch2);
	printf("%s\n", ch1);
	return 0;
}

图解分析:

strcat函数连接前:

strcat函数连接后:

2.库函数strcat源代码

char * __cdecl strcat (char * dst, const char * src)//__cdecl:是函数调用约定
{
	char * cp = dst;
	while( *cp )
	cp++;                 //find end of dst 
	while((*cp++ = *src++) != '\0') ;       //Copy src to end of dst 
	return( dst );                  //return dst 
}

库函数分析

分析:

1、这里 dst 就没有用 const 修饰,而 src 就可以用 const 修饰。

2、这里定义一个新的字符指针 cp 指向 dst 起始位置,然后 cp 开始循环操作,dst 这个指针始终指向字符串开头,最终返回 dst 指向的字符串。

3、先要找目标空间那个起始字符串的尾部,然后再在后面连接。

4、while((*cp++ = *src++) != ‘\0’) ; 这一句就以最简洁的代码实现字符串连接。

3.模拟实现 strcat 函数

模拟实现

char* my_strcat(char* str1, const char* str2)
{
	char* first = str1;
	assert(str1 && str2);
	//目标空间的'\0'
	while (*str1 != '\0')
	{
		str1++;
	}
	//追加内容到目标空间
	while (*str1++ = *str2++)
	{
		;
	}
	return first;
}
int main()
{
	char ch1[20] = "Hello";
	char ch2[] = "World";
	printf("%s\n", my_strcat(ch1, ch2));//这里包含链式访问
	return 0;
}

总结分析

1、这是模拟实现strcat函数,里面相关的细节和源代码中的相同。

2、链式访问:就是把一个函数的返回值当作另一个函数的参数来使用,就是链式访问。

写在后面

友友们,相聚的时刻总是短暂的,又到了说再见的时候啦~  但是字符串这一块经常在面试的时候会出模拟实现某某字符串函数的面试题,因此我们不能只会平时利用头文件直接调用而不去摸清原理哈~ 要做到 摸清、拿捏、吃透 字符串函数。

以上代码均可运行,所用编译环境为 vs2019 ,运行时注意加上编译头文件#define _CRT_SECURE_NO_WARNINGS 1

上一篇:C++中的拷贝构造函数详解

栏    目:C代码

下一篇:MFC修改编辑框光标显示位置方法详解

本文标题:彻底掌握C语言strcat函数的用法

本文地址:http://www.codeinn.net/misctech/223643.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有