strcat是用来拼接字符串的,它会将参数 src 字符串复制到参数 dest 所指的字符串尾部,本章带你了解它的使用并模拟实现它
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语言strcat函数的用法的文章就介绍到这了,更多相关C语言strcat函数内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:彻底掌握C语言strcat函数的用法
基础教程推荐
- C语言基础全局变量与局部变量教程详解 2022-12-31
- C/C++编程中const的使用详解 2023-03-26
- 一文带你了解C++中的字符替换方法 2023-07-20
- 如何C++使用模板特化功能 2023-03-05
- C++详细实现完整图书管理功能 2023-04-04
- C++中的atoi 函数简介 2023-01-05
- 详解c# Emit技术 2023-03-25
- C利用语言实现数据结构之队列 2022-11-22
- C++使用easyX库实现三星环绕效果流程详解 2023-06-26
- C语言 structural body结构体详解用法 2022-12-06