strcat函数及其模拟实现(C语言)

1. 前言

C语言中的库函数有很多,有关于处理字符串的函数有很多。在本文中,我将为大家介绍处理字符串较为常用的一个函数——strcat函数
希望读者们能够好好看,大家一起进步!👍👍👍😊

2. strcat函数

strcat函数的功能是将两个字符串的内容拼接在一起

2.1 strcat函数的原型

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函数的一些规则。

最容易,也是最容易忽略的一点是,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 模拟代码

strcat函数的模拟实现
如果不理解上面代码逻辑的读者,可以看一下下面的图解:
代码解释

4. 总结

通过本文的学习,我们了解和使用了strcat函数以及模拟其实现,相信读者们对编程又有了新一步的理解。

没有任何人可以做你的英雄,如果有的话,一定是你自己!!!🥇🥇🥇

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值