【C语言基础篇】字符串处理函数(三)strcat的介绍及模拟实现

目录

 一、strcat介绍

 函数原型

功能描述 

函数参数

函数返回值  

二、strcat模拟实现

思路

代码

测试


         个人主页:    倔强的石头的博客

        系列专栏 C语言指南         C语言刷题系列  

本文可与前一篇文章 strcpy的使用 搭配食用

【C语言基础篇】字符串处理函数(二)strcpy的介绍及模拟实现-CSDN博客

 一、strcat介绍

strcat 是一个在 C 语言中常用的库函数,它用于连接(拼接)两个字符串。这个函数定义在 <string.h> 头文件中。

 函数原型

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

功能描述 

strcat 函数将 src 字符串的内容追加到 dest 字符串的末尾,并在追加的内容前添加一个空字符('\0')来分隔原来的 dest 字符串和新的 src 字符串。注意,dest 必须有足够的空间来存储追加后的整个字符串,否则可能会导致缓冲区溢出,这是一个常见的安全问题。

函数参数

  • dest:指向目标字符串的指针,即你希望在其中添加 src 字符串的字符串。
  • src:指向源字符串的指针,即你希望添加到 dest 字符串的字符串。

函数返回值  

strcat 函数返回一个指向dest 字符串的指针。

二、strcat模拟实现

思路

函数参数和返回值参考库函数,进入函数内部,先对两个指针assert断言,判断是否为空指针

然后使用一个while循环,让指向目标字符串dest的指针移动到'\0'的位置

接下来再用一个while循环,每次循环完成将源字符串src中的一个字节赋值给目标字符串dest字符串的一个字节,然后两个指针分别+1,直到源字符串中出现'\0',拷贝'\0',结束循环

assert断言的使用详解 参考另一篇文章

【C语言进阶篇】assert宏 使用详解-CSDN博客

注意:while循环的表达式经过优化后可以用一条代码执行需要的所有逻辑

*dest++ = *src++

表达式先执行解引用,再赋值

赋值后检查*dest是否为'\0',判断循环是否继续 然后再执行后置++

代码

#include<stdio.h>
#include<assert.h>
#include<string.h>
char* strcat1(char* dest,const char* src)
{
	assert(dest && src); //判断两个指针是否为空指针
	char* temp = dest;    //保存目标字符串的起始地址
	while (*dest)
		dest++;
	while (*dest++ = *src++)
		;
	return temp;
}
int main()
{
	char arr1[20] = { "abcd" };
	char arr2[] = { "efg" };
	printf("%s\n", strcat(arr1, arr2));  //使用库函数
	printf("%s\n", strcat1(arr1, arr2)); //使用自定义函数
	return 0;
}

测试

最近更新

  1. TCP协议是安全的吗?

    2024-03-22 02:56:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-22 02:56:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-22 02:56:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-22 02:56:01       18 阅读

热门阅读

  1. 【Python-Pandas】to_csv用法示例

    2024-03-22 02:56:01       18 阅读
  2. 【mybatis】MetaObject解读

    2024-03-22 02:56:01       20 阅读
  3. “横扫”时代的《大数据》

    2024-03-22 02:56:01       20 阅读
  4. 单目深度估计:从理论到实践

    2024-03-22 02:56:01       15 阅读
  5. python离线安装依赖库 依赖库版本

    2024-03-22 02:56:01       20 阅读
  6. element ui实践bug

    2024-03-22 02:56:01       19 阅读
  7. 温湿度项目V1.0 设计——简介

    2024-03-22 02:56:01       18 阅读
  8. python数据分析numpy基础之unique对数组元素去重

    2024-03-22 02:56:01       22 阅读
  9. LeetCode hot100-15

    2024-03-22 02:56:01       16 阅读
  10. python——pytest对于失败的用例重新执行

    2024-03-22 02:56:01       18 阅读
  11. nodejs的中雪花算法(Snowflake)

    2024-03-22 02:56:01       22 阅读
  12. solr functionquery函数查询自定义函数实现

    2024-03-22 02:56:01       22 阅读