(解析源代码 第1部分- string.h)深度解析strcat库函数

strcat库函数的使用说明 

strcat 函数用来追加字符串,但不能自己追加自己,自己追加要用strncat函数

首先我们先来看strcat的如何使用的

#include<string.h>    //strcat在string.h文件下

int main()
{
    char dst[20] ="hello ";
    char src[] = "world"
    strcat(dst, src);
    /*
    dst 为目标数组,即为要改变的数组
    src 为来源数组,不需要被修改
    */
    printf("%s\n");    //打印为hello world
    return 0;
}

​

 

 strcat 的两个参数,都是字符串的首个字符的地址

对于dst这个数组,它必须是可以被修改的,如果不能被修改,代码就运行不起来

10db766d8b7344fe95808e50cd241077.png

 

dst必须能容纳src传过来的字符串,不然就会造成数组的越界访问

d4a7be6d5610418dbcc3419b12c482f2.png

虽然能打印但已经越界访问了

dst数组中必须有\0不然就会向后访问

a0043e79496a40e59b1ab56c601412ee.png

 

src数组要有‘\0’,在第一个\0之前(包括\0)字符都会追加过去,追加的会先把dst数组的第一个\0给覆盖,然后把后面的内容也覆盖了

6db43b0ba4c44772af370fa3d81d1df3.png

下面的dst数组经过strcat函数改变后,dst数组的内容a5ff2b9aa51c4b19966683ff261e0649.png

总结

//dst 字符串必须是能修改的,
//    //src 可以不被修改
//    //dst要有‘\0’,在第一个\0前的的字符会被保存,后面的都会被覆盖
//    //src要有‘\0’,在第一个\0之前(包括\0)字符都会追加过去,后面追加
//    //dst必须能容纳传过来的字符串,虽然能打印,但数组会越界访问
//    //返回值,目标的字符串的起始地址 

 

 

模拟实现strcat库函数 

1.参数设计,两个参数的类型都是为char*

2.返回类型,为修改后字符串的首字符地址

3.实现,要先找dst数组\0的地址,把src数组从\0往后赋值,遇到\0结束

 

char *strcat(char *dest, const char *src)  这是c语言规定的函数声明

f1a61b993bb347999c410b52fa3698a0.png

简洁版

67938629e66b4b87acf3e8bde48ef912.png


 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值