【c语言】字符串拼接 | API仿真

news2024/11/20 14:29:03

创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ


c语言系列专栏:c语言之路重点知识整合

字符串知识点:字符串基本概念、存储原理


字符串拼接 目录

  • 一、字符串拼接
  • 二、strcat仿真
    • 声明:
    • 指针方式定义:
    • 调用测试:
    • 运行结果:

一、字符串拼接

标准库函数strcat:

image-20230506145928662

标准库函数strncat:

image-20230506150013759

使用:

#include <stdio.h>
#include <string.h>
char* my_strcat(char* dest, const char* src);
int main()
{
	/*字符串拼接函数*/ 
	char a[50]="hello ";
	char *p="hi ";
	
	/*strcat*/		把p指向的字符串,拼接到 a数组
	strcat(a, p);
	strcat(strcat(a, " how"), " are");
	printf("%s\n", a);

	/*strncat*/	//指定长度的拼接
	strncat(a, "123456", 3);
	printf("%s\n", a);

	return 0;
}

image-20230506150145082


//微软安全函数:
	/*strcat_s字符串拼接函数(安全版)*/
	strcat_s(a,20,p);//20即保证 a 具有的保障性的空间大小
	printf("%s\n",a);
    //20是 目标空间的大小。如果空间大小参数小于复制内容会产生错误提示。
//因此尾部带_s字样的字符串API标明此函数是安全的,不会溢出或目标空间不足的潜在隐患。
    
	/*指定长度的字符串连接(安全版)*/
	strncat_s(a,15,p,1);// 实参15 即保证 a 具有的保障性的空间大小
	printf("%s\n",a);

二、strcat仿真

字符串常用于文字处理,常用且实用。因此其常用功能被封装成了一套API。可通过string.h进行使用。

通过仿真我们可以理解其函数内部工作机制的细节

定义一个my_strcat函数,模仿strcat函数拼接两个字符串

不使用标准函数strcat拼接,使用自己定义的my_strcat函数

声明:

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

指针方式定义:

char* my_strcat(char* destination, const char* source)
{
	strcpy(destination + strlen(destination), source);
	return destination;
}

调用测试:

#include <stdio.h>
#include <string.h>
char* my_strcat(char* dest, const char* src);
int main()
{
	/*字符串拼接函数*/ 
	char a[50]="hello ";
	char *p="hi ";
	
	/*strcat*/		把p指向的字符串,拼接到 a数组
	strcat(a, p);
	strcat(strcat(a, " how"), " are");
	//printf("%s\n", a);

	a[0] = '\0';
	my_strcat(a, p);
	my_strcat(my_strcat(a, " how"), " are");
	printf("%s\n", a);

	printf("\n\n\n");
	return 0;
}
/*仿真字符串拼接函数 strcat   */
char* my_strcat(char* destination, const char* source)
{
	strcpy(destination + strlen(destination), source);
	return destination;
}

运行结果:

与原先的strcat函数拼接效果相同:

image-20230506150640080

大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/495483.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux usb gadget driver代码

本文基于linux-5.4.124 aspeed 2600(BMC)的代码实现来描述arm结构下的gadget driver. 在读之前&#xff0c;我们需要了解什么是usb gadget driver&#xff0c;以及它的作用。 从英文字面上翻译看&#xff0c;usb gadget driver是一个usb小工具驱动。这说了等于没说。实际上&a…

如何通过代码接入手机在网状态 API

引言 在许多场景下&#xff0c;手机号码是一种常用的身份验证信息。而使用手机在网状态 API 可以判断出手机号码是否有效&#xff0c;在一定程度上提高了身份验证的准确性和安全性&#xff0c;它的出现和广泛应用&#xff0c;为各行各业提供了更为便利和高效的解决方案。 本文…

城市夜景照明对于安科瑞智能照明系统的运用

安科瑞 徐浩竣 江苏安科瑞电器制造有限公司 zx acrelxhj 摘要&#xff1a;文章以智能照明控制系统为切入点&#xff0c;介绍了智能照明控制系统在城市夜景照明工程中的应用价值&#xff0c;并结合具体案例分析了城市夜景照明控制管理平台的设计和具体应用。智能照明控制系统…

微软Bing突然爆炸级更新!无需等待人人可用,答案图文并茂

所有人都能上手微软Bing了&#xff01; 今天&#xff0c;微软突然官宣全面开放BingChat&#xff1a; 无需任何等待。只需注册一个账户&#xff0c;首页即可体验。 更关键的是&#xff0c;还有一大堆堪称“家底”的新功能来袭&#xff01; 支持100种语言多模态输出、持续聊天…

控制您的 AWS VPC 终端节点

随着 Amazon Web Services &#xff08;AWS&#xff09; 越来越受欢迎&#xff0c;现在控制您自己的 AWS 虚拟私有云 &#xff08;VPC&#xff09; 终端节点比以往任何时候都更加重要。这可以通过配置和管理 VPC 终端节点中的不同设置来完成。在本文中&#xff0c;我们将讨论为…

yolo目标检测2:yolov1整体思想和网络架构

上一节&#xff1a;https://blog.csdn.net/weixin_39107270/article/details/130408407 概念 You only look once 把检测问题转化成回归问题&#xff0c;一个CNN就搞定了。 2. 核心思想 每个点处有2种候选框&#xff0c;如果候选框内有目标&#xff0c;对候选框进行微调&am…

初学Verilog语言基础笔记整理(实例点灯代码分析)持续更新~

实例&#xff1a;点灯学习 一、Verilog语法学习 1. 参考文章 刚接触Verilog&#xff0c;作为一个硬件小白&#xff0c;只能尝试着去理解&#xff0c;文章未完…持续更新。 参考博客文章&#xff1a; Verilog语言入门学习&#xff08;1&#xff09;Verilog语法【Verilog】一文…

NoSQL自述---衍生过程

NoSQL概述 一.数据存储的演化史 1.单机MySQL的美好年代 在90年代&#xff0c;一个网站的访问量一般都不大&#xff0c;用单个数据库完全可以轻松应付。在那个时候&#xff0c;更多的都是静态网页&#xff0c;动态交互类型的网站不多。 上述架构下&#xff0c;我们来看看数据…

计算机毕业论文内容参考|软件工程|基于java开发汽车销售系统资料

文章目录 导文资料1简述模块与功能总结资料二摘要前言绪论课题背景国内外现状与趋势相关技术与方法介绍导文 如下是一个 Java 实现的汽车销售系统的简单描述,供参考。 计算机毕业论文内容参考|软件工程|基于java开发汽车销售系统资料 资料1 简述 汽车销售系统是专门为汽车销…

jetcache:阿里这款多级缓存框架一定要掌握

0. 引言 之前我们讲解了本地缓存ehcache组件&#xff0c;在实际应用中&#xff0c;并不是单一的使用本地缓存或者redis&#xff0c;更多是组合使用来满足不同的业务场景&#xff0c;于是如何优雅的组合本地缓存和远程缓存就成了我们要研究的问题&#xff0c;而这一点&#xff…

前端002_初始化项目

1、命名和启动项目 将目录名 vue-admin-template-master 重命名为 db-manager-system 将 db-manager-system/package.json 中的 name 值改为 db-manager-system {"name": "db-manager-system","version": "1.0.1","descriptio…

车载搭载SystemUI音频技术,全方位呈现高品质音效

SystemUI概述 SystemUI 是 Android 操作系统中的一个系统服务&#xff0c;主要负责管理和显示系统界面元素&#xff0c;例如状态栏、通知栏、键盘和屏幕截图等。SystemUI 系统服务是系统级别的组件&#xff0c;提供的功能对于用户体验和系统安全性都非常重要。 SystemUI 的主…

KNN中不同距离度量对比和介绍

k近邻算法KNN是一种简单而强大的算法&#xff0c;可用于分类和回归任务。他实现简单&#xff0c;主要依赖不同的距离度量来判断向量间的区别&#xff0c;但是有很多距离度量可以使用&#xff0c;所以本文演示了KNN与三种不同距离度量(Euclidean、Minkowski和Manhattan)的使用。…

Three——四、几何体、高光网络材质、锯齿模糊以及GUI库的使用

文章&#xff1a; Three.js——一、初识Three以及基础的前端场景搭建(结尾含源码)Three——二、加强对三维空间的认识Three——三、动画执行、画布大小、渲染帧率和相机适配体验Three——四、几何体、高光网络材质、锯齿模糊以及GUI库的使用 Threejs 常见几何体简介 Three.j…

为什么我们要使用向量化运算

问题背景 如果你是matlab用户&#xff0c;你一般都会使用向量化运算进行编程。原因也许很简单&#xff0c;因为matlab针对向量化运算在底层做了深度优化&#xff0c;尤其是针对矩阵乘法调用了MKL之类的高度优化的第三库来加速。所以我们在推演算法的阶段&#xff0c;尽量的以向…

管理后台项目-08-首页使用echarts展示图表数据

目录 1-需求页面 2-头部需求分析 3-中间部分需求分析 3.1-mock数据 3.2-动态渲染数据 4-底部需求分析 1-需求页面 2-头部需求分析 上面头部有四个card&#xff0c;card分为上中下三部分&#xff0c;其中上都是文字描述和一个小图标&#xff1b;中间部分有文字&#xff0c;折…

达梦数据库管理系统 DM8

检查数据库版本及服务状态 //查看达梦数据库运行状态 SELECT status$ as 状态 FROM v$instance; //查看达梦数据库版本 SELECT banner as 版本信息 FROM v$version;创建用户 //创建用户 CREATE USER DM IDENTIFIED BY "dameng123";授予用户基本权限 使用 GRANT 语…

重大问题,Windows11出现重大BUG(开始菜单掉帧,卡顿)

重大问题&#xff0c;Windows11出现重大BUG 这种Windows11操作系统出现BUG已经可以说是非常常见的&#xff0c;但是&#xff0c;今天我将代表所有微软用户&#xff0c;解决一个关于UI设计非常不舒服的功能 关闭多平面覆盖 事情叙述问题 微软社区解决方案自己发现的解决方案解决…

[链表OJ题 2] 链表的中间结点 -- 快慢指针找链表的中间节点

目录 题目来源&#xff1a; 代码实现 思路分析&#xff1a; 1.当链表个数为奇数 2.当链表个数为偶数 总结&#xff1a; 题目来源&#xff1a; 876. 链表的中间结点 - 力扣&#xff08;LeetCode&#xff09; (leetcode-cn.com) 题目描述&#xff1a; 代码实现 struct Li…

Dart中的factory关键字用法

factory简介 在Dart中,factory关键字用于定义工厂构造函数。它与普通的构造函数有以下几个区别: factory构造函数的调用可以返回子类型或其它类型的实例。普通构造函数总是返回其包含的类型的实例。factory构造函数可以有返回值。普通构造函数的返回值永远是其包含的类型的实…