「零基础学C语言」带你解析字符串连接函数:strcat_s 函数
liebian365 2025-03-06 16:35 6 浏览 0 评论
目录
一.strcat_s 函数简介
二.strcat_s 函数原理
三.strcat_s 函数实战
一.strcat_s 函数简介
strcat_s函数和strcat函数一样,主要用于字符串拼接;
strcat_s是系统的安全函数,微软在2005后建议用一系统所谓安全的函数,这中间就有strcat_s取代了strcat,原来strcat函数,没有方法来保证有效的缓冲区尺寸,所以它只能假定缓冲足够大来容纳要拷贝的字符串,容易产生程序崩溃。而strcat_s函数能很好的规避这个问题,strcat_s函数语法如下:
/*
*描述:此类函数是用于对字符串进行拼接, 将两个字符串连接再一起
*
*参数:
* [in] strSource:需要追加的字符串
* [in] numberOfElements:拼接后的字符串大小(并非目标字符串大小也并非原始字符串大小)
* [out] strDestination:目标字符串
*
*返回值:errno_t是微软新定义的一种类型,这种类型是一种整型,
* 代表错误代码,若果是0 则代表没有错误,如果是其他的值 ,则会抛出一个值;
*/
//头文件:string.h
errno_t strcat_s(char *strDestination , size_t numberOfElements , const char *strSource );
1.strcat_s函数把strSource所指向的字符串追加到strDestination所指向的字符串的结尾,所以必须要保证strDestination有足够的内存空间来容纳strSource和strDestination两个字符串,否则会导致溢出错误。
strcat_s函数原理:dst内存空间大小 = 目标字符串长度 + 原始字符串场地 + ‘\0’;
2.strDestination末尾的\0会被覆盖,strSource末尾的\0会一起被复制过去,最终的字符串只有一个\0;
二.strcat_s 函数原理
strcat_s函数原理:dst内存空间大小 = 目标字符串长度 + 原始字符串场地 + ‘\0’;
获取内存空间大小使用sizeof函数(获取内存空间大小);获取字符串长度使用strlen函数(查字符串长度)
三.strcat_s 函数实战
#include "stdafx.h"
#include
#include
#include
#include "windows.h"
//error C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
#pragma warning( disable : 4996)
void main()
{
char src[1024] = { "C/C++教程-strcat_s函数" };
char dst[1024] = { "www.codersrc.com" };
//注意:strcat_s第二个参数的计算,该参数是拼接后的字符串大小,并非原字符串大小或者目标字符串大小
int len = strlen(src) + strlen(dst) + 1;
printf("strcat_s之前 dst:%s\n", dst); //
strcat_s(dst, len, src);
printf("strcat_s之后 dst:%s\n", dst);//
system("pause");
}
输出结果:
strcat_s之前 dst:www.codersrc.com
strcat_s之后 dst:www.codersrc.comC/C++教程-strcat_s函数
请按任意键继续. . .
注意:strcat_s第二个参数的计算,该参数是拼接后的字符串大小,并非原字符串大小或者目标字符串大小;
希望对于初学者的你有帮助!
另外的话为了帮助大家,轻松,高效学习C语言/C++,我给大家分享我收集的资源,从最零基础开始的教程到C语言项目案例,帮助大家在学习C语言的道路上披荆斩棘!可以来我粉丝群领取哦~
编程学习书籍分享:
编程学习视频分享:
整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)最重要的是你可以在群里面交流提问编程问题哦!
对于C/C++感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C++的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!
- 上一篇:OCR发票识别
- 下一篇:C语言之strcat字符串拼接函数
相关推荐
- 几句代码实现搜索内存、解密数据库
-
本文只分享编程技术,不涉及具体软件。涉及具体软件的文章或工具出现很多年了,到处都是。头条上也有很多,这里我们不讨论。有用户问我:登录后才能解密,输入密码后才能备份出数据库,这些本来就是我自己可以查看的...
- JDK 11 新特性总结(jdk最新特性)
-
一、语言特性增强局部变量类型推断升级支持在Lambda表达式参数中使用var关键字,编译器自动推断类型,简化代码编写并保持类型安全。...
- 和爷爷一起学Arduino:四位七段数码显示(学习面向对象编程)
-
2018年,我们买了个七段四位数码显示LED组件,如下图。经试验,它是与TM1637兼容的。右侧的引脚从上到下依次是,G(GND)、D(Data,数据)、C(Clock,时钟)、V(Vcc)。有两种,...
- Linux 技巧:重定向 stderr 和 stdout 输出到 gdb 窗口
-
简介本文介绍了一个实用gdb调试技巧。它结合实际例子,一步一步示意如何重定向stderr和stdout到gdb窗口,使得查看应用程序的输出信息更为方便,从而提高调试者的工作效率。问题为...
- CLion 1.0发布,C/C++跨平台集成开发环境
-
日前,知名开发者工具厂商JetBrains(捷克的一家软件开发公司)正式发布了一款跨平台的C/C++集成开发环境CLion1.0。这款强大的IDE旨在让你基于Linux、OSX、Windows系...
- 「运维经」第25章——gdb最实用的那几条命令
-
实用调试操作1setscheduler-lockingoff|on...
- XV6操作系统入门系列-02-详解启动过程
-
第零步-心理上的准备工作任何事物都有其关键的窍门,当我们抓住了关键,事情会变得简单起来;当我们没有抓住要领,事情就会变得异常困难。...
- GDB德国格德宝|OEM|奔驰车厂认证(德宝格机械)
-
MBMercedes油规格MB规范的名称源自奔驰蓝皮书计划,除以编号的段落和页面。经销商使用它来识别制造商认证的产品及其在发动机上的正确应用。...
- o1已不是聊天模型了!SpaceX前工程师公开全新使用秘籍
-
梦晨发自凹非寺量子位|公众号QbitAI苹果&SpaceX前工程师分享o1使用心得,奥特曼、Brockman都转发了。...
- ARM平台如何玩转GDB远程调试?(arm gdbserver)
-
前言关于GDB工具GDB工具是GNU项目调试器,基于命令行使用。和其他的调试器一样,可使用GDB工具单步运行程序、单步执行、跳入/跳出函数、设置断点、查看变量等等,它是UNIX/LINUX操作系统下...
- GDB高级技巧:边Debug边修复BUG,无需修改代码,无需重新编译
-
友情提醒:本文介绍的调试技巧非常实用,但为了讲解清楚,篇幅较长,请耐心看完,我保证你定会有收获!引言程序调试时,你是否遇到过下面几种情况:1、经过定位,终于找到了程序中的一个BUG,满心欢喜地以为找到...
- 实现多态必须满足什么条件(实现多态的两种方式)
-
虚函数机制virtualmechanism先看代码:classA{public:virtualvoidprint(){cout<<"A.."<<endl;}...
- gdb查看寄存器及内存数据与函数调用栈分析
-
在分析kdump生成的vmcore文件时,有时会需要分析函数调用栈及函数参数与局部变量的情况,这里以使用gdb为例调试分析一下函数调用的栈帧创建与销毁。操作系统:centos73.10.0-862...
- C++语言求数组元素最大值及其下标例程(指针学习与运用)
-
C++语言编写求数组元素最大值及其下标例程(指针学习与运用)文章logo#include"stdafx.h"...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- wireshark怎么抓包 (75)
- qt sleep (64)
- cs1.6指令代码大全 (55)
- factory-method (60)
- sqlite3_bind_blob (52)
- hibernate update (63)
- c++ base64 (70)
- nc 命令 (52)
- wm_close (51)
- epollin (51)
- sqlca.sqlcode (57)
- lua ipairs (60)
- tv_usec (64)
- 命令行进入文件夹 (53)
- postgresql array (57)
- statfs函数 (57)
- .project文件 (54)
- lua require (56)
- for_each (67)
- c#工厂模式 (57)
- wxsqlite3 (66)
- dmesg -c (58)
- fopen参数 (53)
- tar -zxvf -c (55)
- 速递查询 (52)