服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - 彻底掌握C语言strcat函数的用法

彻底掌握C语言strcat函数的用法

2022-11-22 12:34vince C/C++

strcat是用来拼接字符串的,它会将参数 src 字符串复制到参数 dest 所指的字符串尾部,本章带你了解它的使用并模拟实现它

strcat函数详解如下

1.函数介绍

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.函数的简单使用

代码展示如下:

?
1
2
3
4
5
6
7
8
int main()
{
    char ch1[20] = "Hello";
    char ch2[] = "World";
    strcat(ch1, ch2);
    printf("%s\n", ch1);
    return 0;
}

图解分析:

strcat函数连接前:

彻底掌握C语言strcat函数的用法

strcat函数连接后:

彻底掌握C语言strcat函数的用法

彻底掌握C语言strcat函数的用法

2.库函数strcat源代码

?
1
2
3
4
5
6
7
8
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 函数

模拟实现

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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函数内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/m0_56817529/article/details/124558706

延伸 · 阅读

精彩推荐
  • C/C++深入学习C语言中的函数指针和左右法则

    深入学习C语言中的函数指针和左右法则

    这篇文章主要介绍了深入学习C语言中的函数指针和左右法则,左右法则是一种常用的C指针声明,需要的朋友可以参考下...

    zinss269144782021-03-05
  • C/C++C++队列用法实例

    C++队列用法实例

    这篇文章主要介绍了C++队列用法,实例分析了C++实现队列的入队、出队、读取与判断等相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    G05614042021-03-02
  • C/C++C++实现学生管理系统

    C++实现学生管理系统

    这篇文章主要为大家详细介绍了C++实现学生管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    一个鸹貔9102021-09-17
  • C/C++C++命名空间namespace的介绍与使用

    C++命名空间namespace的介绍与使用

    今天小编就为大家分享一篇关于C++命名空间namespace的介绍与使用,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小...

    蜗牛20111272021-07-14
  • C/C++VSCode插件开发全攻略之打包、发布、升级的详细教程

    VSCode插件开发全攻略之打包、发布、升级的详细教程

    这篇文章主要介绍了VSCode插件开发全攻略之打包、发布、升级的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参...

    我是小茗同学6212021-09-03
  • C/C++OpenCV实战之基于Hu矩实现轮廓匹配

    OpenCV实战之基于Hu矩实现轮廓匹配

    这篇文章主要介绍了利用C++ OpenCV实现基于Hu矩的轮廓匹配,文中的示例代码讲解详细,对我们学习OpenCV有一定的帮助,感兴趣的可以学习一下...

    Zero___Chen9122022-08-20
  • C/C++C++ 遍历二叉树实例详解

    C++ 遍历二叉树实例详解

    这篇文章主要介绍了C++ 遍历二叉树实例详解的相关资料,需要的朋友可以参考下...

    C++教程网4262021-05-14
  • C/C++使用pthread库实现openssl多线程ssl服务端和客户端

    使用pthread库实现openssl多线程ssl服务端和客户端

    使用pthread库实现openssl多线程ssl服务端和客户端,大家参考使用吧...

    C语言教程网7552021-01-14