
系列文章目录深度剖析strcat strncat深度剖析strchr strstr深度剖析strcmp strncmp深度剖析strcpy strncpy深度剖析strlen strtok深度剖析memcpy memmove深度剖析memset memcmp文章目录系列文章目录前言一、strcat1.调用结构2.使用详解3.源码剖析二、strncat1.调用结构2.使用详解3.源码剖析前言库函数string是我们经常使用也是非常重要的代码我将会对常用的函数的用法和实现原理进行深度剖析一、strcat1.调用结构char*strcat(char*dest,constchar*src);2.使用详解strcat把 src 所指向的字符串追加到 dest 所指向的字符串的结尾原理详解两个字符串必须以\0结束目标空间必须有足够的大能容纳下源字符串的内容目标空间必须可修改不可追加自己可通过修改传入src的地址改变追加的起始位置3.源码剖析char*Strcat(char*dest,constchar*src){//把 src 所指向的字符串追加到 dest 所指向的字符串的结尾 (不可追加自己)assert(destsrc);//断言防止传入空指针char*startdest;//记录字符串dest的起始位置用于返回起始地址while(*dest){//找到字符串dest的\0dest;}while(*src!\0){//将字符串src追加到字符串dest的结尾*dest*src;}*dest\0;//在结尾追加上\0returnstart;}二、strncat1.调用结构char*strncat(char*dest,constchar*src,size_tn);2.使用详解strncat把 src 所指向的字符串追加到 dest 所指向的字符串的结尾直到 n 字符长度为止原理详解两个字符串必须以\0结束目标空间必须有足够的大能容纳下源字符串的内容目标空间必须可修改不可追加自己可通过修改传入src的地址改变追加的起始位置3.源码剖析char*Strncat(char*dest,constchar*src,intlen){//把 src 所指向的字符串追加到 dest 所指向的字符串的结尾直到 n 字符长度为止 (不可追加自己)assert(destsrc);//断言防止传入空指针char*startdest;//记录字符串dest的起始位置用于返回起始地址while(*dest){//找到字符串dest的\0dest;}while(len--){//将字符串src追加到字符串dest的结尾if(*src\0){//如果src结尾的\0也完成追加则直接返回returnstart;}*dest*src;}*dest\0;//如果追加完成len个字节则在最后追加上\0returnstart;}