深度剖析 string —— strcat strncat
2026/9/6 3:39:07 网站建设 项目流程

系列文章目录

深度剖析:strcat & strncat
深度剖析:strchr & strstr
深度剖析:strcmp & strncmp
深度剖析:strcpy & strncpy
深度剖析:strlen & strtok
深度剖析:memcpy & memmove
深度剖析:memset & memcmp


文章目录

  • 系列文章目录
  • 前言
  • 一、strcat
    • 1.调用结构
    • 2.使用详解
    • 3.源码剖析
  • 二、strncat
    • 1.调用结构
    • 2.使用详解
    • 3.源码剖析

前言

库函数string是我们经常使用也是非常重要的代码,我将会对常用的函数的用法和实现原理进行深度剖析


一、strcat

1.调用结构

char*strcat(char*dest,constchar*src);

2.使用详解

strcat:把 src 所指向的字符串追加到 dest 所指向的字符串的结尾

原理详解

  1. 两个字符串必须以'\0'结束
  2. 目标空间必须有足够的大,能容纳下源字符串的内容
  3. 目标空间必须可修改
  4. 不可追加自己
  5. 可通过修改传入src的地址改变追加的起始位置

3.源码剖析

char*Strcat(char*dest,constchar*src){//把 src 所指向的字符串追加到 dest 所指向的字符串的结尾 (不可追加自己)assert(dest&&src);//断言,防止传入空指针char*start=dest;//记录字符串dest的起始位置用于返回起始地址while(*dest){//找到字符串dest的'\0'dest++;}while(*src!='\0'){//将字符串src追加到字符串dest的结尾*dest++=*src++;}*dest='\0';//在结尾追加上'\0'returnstart;}

二、strncat

1.调用结构

char*strncat(char*dest,constchar*src,size_tn);

2.使用详解

strncat:把 src 所指向的字符串追加到 dest 所指向的字符串的结尾,直到 n 字符长度为止

原理详解

  1. 两个字符串必须以'\0'结束
  2. 目标空间必须有足够的大,能容纳下源字符串的内容
  3. 目标空间必须可修改
  4. 不可追加自己
  5. 可通过修改传入src的地址改变追加的起始位置

3.源码剖析

char*Strncat(char*dest,constchar*src,intlen){//把 src 所指向的字符串追加到 dest 所指向的字符串的结尾,直到 n 字符长度为止 (不可追加自己)assert(dest&&src);//断言,防止传入空指针char*start=dest;//记录字符串dest的起始位置用于返回起始地址while(*dest){//找到字符串dest的'\0'dest++;}while(len--){//将字符串src追加到字符串dest的结尾if(*src=='\0'){//如果src结尾的'\0'也完成追加,则直接返回returnstart;}*dest++=*src++;}*dest='\0';//如果追加完成len个字节,则在最后追加上'\0'returnstart;}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询