首先要明确strcat的功能是:将参数dest字符串和参数src字符串拼接起来

目录

函数介绍

与strncat的区别

函数实现:

用法示例:

结果展示:

函数介绍

函数原型:char* strcat(char* dest,const char* src)

头  文  件:#include <string.h>
返 回 值:返回dest字符串起始地址
说  明:
1、dest和src字符串必须’\0’结束
2、目标空间必须可修改(前面不能加const并且不能说常量字符串)
3、 dest最后的结束字符’\0’会被覆盖掉,并在连接后的字符串的尾部再增加一个’\0’
4、dest与src所指的内存空间不能重叠

5、dest要有足够的空间来容纳要复制的字符串

6、字符串不可以连接字符串本身:自己连接自己就会覆盖\0,这样就会死循环

与strncat的区别

大家可以先对比一下两个函数:

char* My_strcat(char* dest, const char* src)

char* My_strncat(char* dest, const char* src, int n)

1、strcat()增加字符串的结束条件是src == ‘\0’;

strncat的循环结束的条件则是所要追加的字符串个数为0;

2、strcat() 函数把源字符串整个连接到目标字符串的后面;

strcat()方便之处在于只用传两个参数可以实现,比较简便;

strncat()用来连接源字符串的前n个字符到目标字符串后,所以要多传一个参数n

3、strcat本质上是把目标字符串的’\0’与源字符串的元素交换实现的,当连接的是自己的时候,就          会陷入死循环,那么这时只能使用strncat函数了
建议:建议采用strncat(),因为不会出现上述的陷入死循环的可能,并且strncat()有一个不可或缺            的优势,就是能够自由控制要增加的字符个数

函数实现:

//dest为前面的字符串,src为后面要加的字符串
//dest因为内存要改变,所以不能加const,而src加上更好
char* My_strcat(char* dest, const char* src)
{assert(dest != NULL && src != NULL);  //保证dest、src非空char* ret = dest;    //将dest首地址储存在ret中,在之后dest++运算中,可以方便找到while (*dest != '\0')  //用指针往后一个个找,找到dest结尾的‘\0’dest++;while ((*dest++ = *src++) != '\0')//把src里的字符一个个放入dest后;return ret;  //返回dest字符串起始地址
}

用法示例:

#include <stdio.h>
#include<string.h>
#include <assert.h>
//dest为前面的字符串,src为后面要加的字符串
//dest因为内存要改变,所以不能加const,而src加上更好
char* My_strcat(char* dest, const char* src)
{assert(dest != NULL && src != NULL);  //保证dest、src非空char* ret = dest;    //将dest首地址储存在ret中,在之后dest++运算中,可以方便找到while (*dest != '\0')  //用指针往后一个个找,找到dest结尾的‘\0’dest++;while ((*dest++ = *src++) != '\0')//把src里的字符一个个放入dest后;return ret;  //返回dest字符串起始地址
}
int main()
{char arr1[20] = "I LOVE YOU";My_strcat(arr1, " SORRY" );//经过函数My_strcat后 ,arr1里应该是字符串I LOVE YOU SORRYprintf("arr1: %s\n", arr1);return 0;
}

结果展示:

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

  1. strtok函数详解 看这一篇就够了-C语言(函数讲解、函数实现、使用用法举例、作用)

    strtok()函数用于: 将字符串拆分为标记 函数介绍 函数声明:char * strtok ( char * str, const char * delimiters ); 头  文  件:#in ...

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

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

  3. strstr函数详解 看这一篇就够了-C语言(函数讲解、函数实现、使用用法举例、作用、自己实现函数 )

    strstr()函数用于:查找子字符串 目录 函数介绍 用法示例 函数讲解 实现函数 事例展示 函数介绍 函数声明:char *strstr(const char *str1, const char ...

  4. memmove函数详解 看这一篇就够了-C语言(函数讲解、函数实现、使用用法举例、作用、自己实现函数 )

    memmove()函数用于:移动内存块 函数介绍 函数声明:void * memmove ( void * destination, const void * source, size_t num ) ...

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

    首先要明确strncpy的功能是:拷贝src字符串的前n个字符至dest 目录 函数介绍 与strcpy的区别 函数实现: 用法示例: 结果展示: 函数介绍 函数原型: char *strncpy(c ...

  6. memcpy函数详解 看这一篇就够了-C语言(函数讲解、 使用用法举例、作用)

    memcpy()函数用于:复制内存块 函数介绍 函数声明:void * memcpy ( void * destination, const void * source, size_t num ); ...

  7. strerror函数详解 看这一篇就够了-C语言(函数讲解、 使用用法举例、作用)

    strerror()函数用于:获取指向错误消息字符串的指针 函数介绍 函数声明: char * strerror ( int errnum ); 头  文  件:#include <string ...

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

    首先要明确strncmp的功能是:用来比较指定长度两个字符串的大小 目录 函数介绍 与strcmp的区别 ACSII表 函数实现: 用法示例: 结果展示: 函数介绍 函数原型:int strncmp( ...

  9. 代理后台中间件_Golang Gin 实战(十三)| 中间件详解看这一篇就够了

    6000字大章带你死磕Golang Gin中间件 在Gin的整个实现中,中间件可谓是Gin的精髓.一个个中间件组成一条中间件链,对HTTP Request请求进行拦截处理,实现了代码的解耦和分离,并且 ...

最新文章

  1. 状态估计问题学习记录(1)
  2. 如何用极致业务基础平台做一个通用企业ERP系列之三启用期间管理设计
  3. 泛型--协变与逆变(转)
  4. java print int_java – 在printin输入int
  5. 【旅行】——出发!露营去。
  6. 02 jmeter 简单发送http请求
  7. 7000更换控制器电源步骤_开关电源控制环路(初级篇:上)
  8. 变成“砖”?旧款 Kindle 因 3G 消失将无法联网
  9. mysql sql使用_MySql简单sql使用
  10. 移动端WEB开发,click,touch,tap事件浅析
  11. PHP设计模式——中介者模式
  12. 【编程题目】寻找丑数
  13. Ryu控制器正则表达式字符串 r'[0-9]{1,4}|all' 分析
  14. 天锐绿盾技术大讲堂:解密审批流程管理
  15. 从零开始学习区块链(1)
  16. 苯小孩的伤感空间日志发布:一个人,一座城,满心疼
  17. 在.net gridview 更新回oracle数据库,.net 连接Oracle操作 - cathy_10 - 博客园
  18. MFC调用Opencv显示视频
  19. IntelliJ IDEA:安装/搭建/配置/插件
  20. 英格兰 VS 特利尼达和多巴哥

热门文章

  1. D3D HOOK实现透视讲解
  2. 用Go语言 实现的数学相关案例汇总 (Golang经典编程案例)
  3. 【Windows】Win10家庭版启用组策略gpedit.msc
  4. Alienware 2010外星人电脑主题
  5. java使用zxing生成二维码,可带logo和底部文字
  6. 智云通CRM:获得客户承诺的法宝之一——选择、假设与赞美
  7. meteor中autoform的报错信息中文化
  8. su组件在什么窗口_如何在草图大师SketchUp中创建窗口组件?
  9. C语言有符号整型和无符号整型的比较
  10. 软件测试 通用技术04 缺陷基本概述 缺陷的生命周期 缺陷的识别 缺陷报告 缺陷报告模板 测试需求、测试用例、缺陷报告的关系