1. 前言
C语言中的库函数有很多,有关于处理字符串的函数有很多。在本文中,我将为大家介绍处理字符串较为常用的一个函数——strcat函数
希望读者们能够好好看,大家一起进步!👍👍👍😊
2. strcat函数
strcat函数的功能是将两个字符串的内容拼接在一起
2.1 strcat函数的原型
char* strcat(char* destination, const char* source);
其返回值是一个字符指针类型,那就是说,返回的正是拼接之后的字符串。在上述的原型中体现为destination变量所指的字符串。
其余两个变量,这里我就不细说了。不懂得读者可以观看本人之前写过的文章,这是链接:参数解释。
2.2 strcat函数规则
在正式讲解如何使用strcat函数之前,先讲解一下strcat在运行过程中所遵循的一些规则。
规则:
1. 源字符串(就是source指针所指向的字符串)必须以’\0’结尾;
2. 目标字符串中也得有’\0’,否则就无法判断从哪里开始追加字符内容了;
3. 目标空间得足够大,能容纳修改内容后的目标字符串。
4. 目标空间必须得修改(也就是destination变量不能用const限定符修饰);
5. 不允许字符串自己给自己追加。
好的,相信介绍完规则后,读者们已经对strcat函数有了初步的了解了。
下面我们将正式介绍strcat函数的使用!
2.3 strcat函数的使用
相信通过上面的例子,你已经会使用strcat函数处理问题了。但是,这样还远远不够,我们还得在深入挖掘一下strcat函数的一些规则。
最容易,也是最容易忽略的一点是,strcat函数是从目标字符串的‘\0’这个位置开始追加的。什么意思呢?下面我再写一个代码展示:
如果在你不知道strcat函数规则的前提之下,你是否会直接认为这个打印的结果不也和上述那个例子一样,打印的都是"I love learning c!“。
但是代码是不会说谎的,它打印的是"I love c!”。也就是说,strcat函数在遇到目标字符串中的第一个’\0’时,直接从这个字符的位置开始追加源字符串的内容!
如果你还不信,我接下来给你看一下,arr1在运行时发生了什么?
这是编译器还没读到strcat函数之前的arr1和arr2变量中的内容:
这是编译器读到strcat函数之后的arr1和arr2变量中的内容:
仔细观察红色部分的内容是否发生了改变,答案时发生了不小的改变。
可能此时有些读者心里有这么一个困惑,arr1后面还有内容啊,为什么它就没打印出来?
原因很简单:%s占位符是指打印‘字符串中第一个\0’之前出现的内容。
3. strcat函数的模拟实现
好了,上面讲了这么多有关于strcat的使用和注意事项了,你心里是否已经有把知识的尺子随时度量知识的长度了。
那么,爽不能停!接下来我再给大家讲strcat函数的模拟实现。
3.1 实现思路
通过上述对于strcat函数规则的讲解,我们可以从此入手。为了避免有些读者遗忘向上翻找浪费时间,这里我就再写一遍:
规则:
1. 源字符串(就是source指针所指向的字符串)必须以’\0’结尾;
2. 目标字符串中也得有’\0’,否则就无法判断从哪里开始追加字符内容了;
3. 目标空间得足够大,能容纳修改内容后的目标字符串。
4. 目标空间必须得修改(也就是destination变量不能用const限定符修饰);
5. 不允许字符串自己给自己追加。
根据上面的要求,我们可以写出这么一个函数头
char* my_strcat(char* dest, const char* src)
3.2 模拟代码
如果不理解上面代码逻辑的读者,可以看一下下面的图解:
4. 总结
通过本文的学习,我们了解和使用了strcat函数以及模拟其实现,相信读者们对编程又有了新一步的理解。
没有任何人可以做你的英雄,如果有的话,一定是你自己!!!🥇🥇🥇