C语言strcat、strncat函数详解

  • 一、strcat函数
    • 1.函数原型
    • 2.函数参数、返回值解析
    • 3.函数作用
    • 4.注意事项
    • 5.strcat函数模拟实现
  • 二、strncat函数
    • 1.函数原型
    • 2.函数作用
    • 3.strncat函数模拟实现
    • 4.字符串自追加

一、strcat函数

1.函数原型

char * strcat ( char * destination, const char * source );

2.函数参数、返回值解析

①:const char * source 源字符串,const 表示该字符串无法被修改;
②:char * destination 目标空间;
③:返回值类型为char* 表示目标空间的首地址。

3.函数作用

将源字符串的副本追加到目标字符串。目标中的终止空字符被源字符串的第一个字符覆盖,并在目标中两者的连接所形成的新字符串的末尾追加一个新的空字符。

4.注意事项

①:源字符串必须以 ‘\0’ 结尾;
②:目标空间必须足够大,以确保能存放源字符串,否则将会导致内存泄漏;
③:目标空间必须可修改。

5.strcat函数模拟实现

char* my_strcat(char* dest, char* src)
{char* str = dest;while (*dest){dest++;}while ((*dest++ = *src++)){}return str;
}int main()
{char arr1[10] = "abc";char arr2[10] = "def";char* str = my_strcat(arr1, arr2);printf("%s\n", str);return 0;
}

输出结果:

注:实现一个将字符串追加在自己的末尾的 strcat 函数:

char* strcat(arr1, arr1);

当你运行这个程序你会发现会进入一个死循环,为什么呢?
首先,dest 和 src 指针都指向字符串的首地址,当 dest 指针走到字符串末尾 ‘\0’ 处就开始了追加操作,那么字符串的首个元素就会将 ‘\0’ 覆盖 ,而这个函数的结束条件是 src 指针找到源字符串的 ‘\0’ ,但是,由于在追加操作的第一步已经将 ‘\0’ 覆盖,所以说根本就找不到结束标志,所以程序就会进入死循环。
那么,要实现这要的操作,我们可以选择 strncat 函数。

二、strncat函数

1.函数原型

char * strncat ( char * destination, const char * source, size_t num );

2.函数作用

①:将源字符串的前num字个符加上一个结束空字符追加到目标空间。
②:如果源字符串的长度小于num,则只将包含终止符 ‘\0’ 之前的内容追加在目标空间。

3.strncat函数模拟实现

char* my_strncat(char* dest, char* src, int k)
{char* ret = dest;while (*dest){dest++;}while (k--){if (!(*dest++ = *src++))return ret;}*dest = '\0';return ret;
}int main()
{char arr1[10] = "abc";char arr2[] = "defg";char* ret = my_strncat(arr1, arr2, 3);printf("%s\n", ret);return 0;
}

输出结果:

4.字符串自追加

char* my_strncat(char* dest, char* src, int k)
{char* ret = dest;while (*dest){dest++;}while (k--){if (!(*dest++ = *src++))return ret;}*dest = '\0';return ret;
}int main()
{char arr1[10] = "abc";char* ret = my_strncat(arr1, arr1, 3);printf("%s\n", ret);return 0;
}

输出结果:

C语言strcat、strncat函数详解相关推荐

  1. c语言strcat()/strcat_s()函数详解

    前言 先看下strcat()/strcat_s()函数调用报错: 放大一点 严重性    代码    说明    项目    文件    行    禁止显示状态 错误    C4996    'str ...

  2. c语言中快排函数,c语言快排函数详解

    c语言快排函数详解 int cmp(const void *a, const void *b) 返回正数就是说 cmp 传入参数第一个要放在第二个后面, 负数就是传入参数第一个要放第二个前面, 如果是 ...

  3. C语言-入门级别函数详解

    C语言-入门级别函数详解 写在开始 关于函数 1. 函数的定义形式 2.函数的声明 3. 返回语句 4.函数参数 4.1 形式参数(传值调用) 4.2 实际参数(传址调用) 4.3无参数 5.函数的调 ...

  4. strncat函数详解看这一篇就够了-C语言(函数实现、使用用法举例、作用、与strcat的区别)

    首先要明确strncat的功能是:从字符串src的开头拷贝n个字符到dest字符串尾部 目录 函数介绍: 与strcat的区别 函数实现: 用法示例: 结果展示: 函数介绍: 函数原型:char* s ...

  5. 【C语言】字符串函数详解

    hello~~,我是~小鹿 ,这是我的第一篇博客,没有循序渐进从基础开始写,只是最近在学习这里就写了,比较随心吧.希望这一篇博客能够给你带来帮助,之后也会继续写的,只是可能没有循序渐进,会比较杂七杂八 ...

  6. C语言qsort快速排序函数详解

    直接进入主题,在c语言中qsort函数是用来快速排序的,qsort有4个参数,分别是数组地址,数组元素个数,数组元素字节大小和一个比较数组元素的函数指针.让我来看一下官方给出的使用标准,上图: 让我们 ...

  7. c语言编写printf函数,C语言之printf函数详解

    一  基本用法 格式化控制符:%d %c %ld %lf 意思是:相当于在要输出的语句里面挖了一个坑,也就是在内存中开辟空间,然后再那个坑的位置(也就是开辟好的空间),填上你想要显示的值 printf ...

  8. C语言用函数字符串的查找,字符串查找函数,C语言字符串查找函数详解

    在对 C 语言的编程实践中,字符串查找是最频繁的字符串操作之一,本节就对常用的字符串查找函数做一个简单的总结. 使用 strchr 与 strrchr 函数查找单个字符如果需要对字符串中的单个字符进行 ...

  9. C语言常用字符串函数详解

    在C语言标准库里面,存在一个对字符串数组进行操作的函数的头文件为string.h. 常用的字符串函数有strlen,strcpy,strcat等等. 了解这些字符串函数是如何实现的可以有助于更好的使用 ...

最新文章

  1. ASP字符串函数大全
  2. MSM 实现 tomcat session 共享
  3. 【Python】Pandas宝藏函数-concat()
  4. 分页池内存持续增长_Java技术学习之对虚拟机(JVM)内存模型的分析
  5. 问题一:使用AndroidDriver而非原来的AppiumDriver的原因
  6. 洛谷 P2463 [SDOI2008]Sandy的卡片 解题报告
  7. 向量余弦值python_向量/矩阵的余弦值打印(元素明智的操作) 使用Python的线性代数
  8. IT部门不应该是一个后勤部门
  9. 用一张图片告诉你芯片设计
  10. SSM框架笔记11:Spring常用配置与高级话题
  11. 网路游侠:计算机保密检查工具大全 2009版
  12. 清除定时器 和 vue 中遇到的定时器setTimeout setInterval问题
  13. NSCalendar日历
  14. 带蒙版的安卓剪辑软件_史上最全的手机剪辑软件测评,最好用的竟然没人听过?!...
  15. Rust 智能指针(二)
  16. 学计算机专业必须马上买笔记本吗,大学生刚刚进入学校,需要购买笔记本电脑吗?听听学姐的建议吧...
  17. 分享五款没什么名气却意外好用的软件
  18. 4键电子手表说明书_迪士尼手表四键说明书
  19. python大驼峰_匈牙利法、大小驼峰法(两种编程命名规则)
  20. 微信小程序|使用小程序制作一个时间管理小工具

热门文章

  1. u盘装linux-centos
  2. 一位大数据开发工程师的两年工作经验总结
  3. 数值计算 --- B样条函数(B-spline)
  4. (六)算法 -- 4. 级数展开
  5. IF: 25+ 单细胞转录组学揭示肝实质和非实质细胞系的早期出现
  6. Bip44确定性算法的android实现
  7. oracle时间格式化常用函数
  8. HTML常用标记(完整版)
  9. 精美的水平导航网站作品欣赏(下篇)
  10. 集成JIRA/TAPD管理缺陷,增强接口测试,MeterSphere开源持续测试平台v1.2.0发布丨Release Notes