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++ 数据结构超详细讲解顺序表 2023-03-25
- C语言详解float类型在内存中的存储方式 2023-03-27
- 我应该为我的项目使用相对包含路径,还是将包含目录放在包含路径上? 2022-10-30
- C语言手把手带你掌握带头双向循环链表 2023-04-03
- Easyx实现扫雷游戏 2023-02-06
- c++ const 成员函数,返回一个 const 指针.但是返回的指针是什么类型的 const? 2022-10-11
- Qt计时器使用方法详解 2023-05-30
- 详解C语言中sizeof如何在自定义函数中正常工作 2023-04-09
- ubuntu下C/C++获取剩余内存 2023-09-18
- C语言qsort()函数的使用方法详解 2023-04-26