字符串的处理---拷贝,合并,比较(strcpy,strcat,strcmp)

C/C++常用的字符串函数 字符串函数(String processing function)也叫字符串处理函数,指的是编程语言中用来进行字符串处理的函数,需要调用头文件include。在C/C++编程中经常会遇到字符串的处理,比如路径的切割、信号的判断(字符串比较),以及字符串大小的计算,熟练掌握常用的字符串函数,了解其可以实现的功能,对于做项目大有裨益。 阅读详情

  个人总结常用的相关API函数:

拷贝:strcpy,memcpy,sprintf;strncpy,_snprintf

合并:strcat,sprintf;strncat,_snprintf

比较:strcmp,memcmp;strncmp

 

这里我们只需要分析其中一类的相关函数,同时就可以了解其他类的函数了。

 

首先看看strcpy,memcpy,sprintf三个函数,这三个函数都可以用来进行字符串之间的拷贝操作。

strcpy::Copy a string.

函数原型::

char *strcpy(
   char *strDestination,
   const char *strSource
);

strcpy是拷贝字符串,以/0为标志结束(即一旦遇到数据值为0的内存地址拷贝过程即停止)

memcpy::Copies bytes between buffers.

函数原型:

void *memcpy(
   void *dest,
   const void *src,
   size_t count
);

而memcpy是给定来源和目标后,拷贝指定大小n的内存数据,而不管拷贝的内容是什么(不仅限于字

符)
sprintf ::Write formatted data to a string.

函数原型:

int sprintf(
   char *buffer,
   const char *format [,
      argument] ...
);

sprintf一个可以给定格式的字符串拷贝

 

 

然后我们看一下三个函数的区别:

strcpy只能处理字符串;如果拷贝带有特殊字符的串,就只能用memcpy或memmove。memcpy和memmove

功能基本上差不多,但是当源串和目标串有Overlap时,memmove可以正确处理,memcpy则不行。

另外char   *strcpy() 跟 memcpy() 的区别在于当源地址和目标地址发生重叠时,前者是未定义的,

就依赖于编译器的,后者是先做了一份拷贝,最终是能正确实现的, 前者就不一定了

 

同时我们注意到,在这三个函数中,除了memcpy考虑到源字符串和目的字符串的拷贝长度以外,

strcpy和sprintf都是没有考虑到的,这样在使用的时候很有可能就会因为目的字符串的内存小于源

字符串的内存大小,这将会导致溢出,内存异常导致程序崩溃。

 

这时候我们就可以考虑到使用进行了长度限制的拷贝操作函数,那就是strncpy和_snprintf.

strncpy::Copy characters of one string to another.

函数原型:

char *strncpy(
   char *strDest,
   const char *strSource,
   size_t count
);

_snprintf::Writes formatted data to a string.

函数原型:

int _snprintf(
   char *buffer,
   size_t count,
   const char *format [,
      argument] ...
);

当然,使用这两个函数只是可以保证控制了部分不必要的溢出错误,但是并不能保证拷贝成功,就像

上面strcpy和memcpy的分析,所以,如果需要拷贝字符串,尽量可以考虑使用memcpy

 

最后还可以看到,sprintf和_snprintf两个函数同时出现在了拷贝和合并字符串操作中,它们同事具

有了字符窜拷贝和合并的功能。在将多个源字符串格式化后合并入目的字符串中,如果目的字符串为

空,这时就相当于做了一次格式化的拷贝操作。

C++中常用的字符串函数 C++语言提供了比C语言更丰富的字符串处理功能。它可以在字符串上经行输入,输出,合并,修改,比较,转换,复制,搜索等操作。使用这些现成的功能可以大大减少我们的编程的负担。 输入和输出的字符串函数,如printf,puts,cout,scanf,gets,cout等,在使用时应包含头文件cstdio,并使用其他字符串函数包含头文件cstring。 cstr... 阅读详情

相关推荐

C语言经典面试题之深入解析字符串拷贝的sprintf、strcpy和memcpy使用与区别

sprintf 指的是字符串格式化命令,是把格式化的数据写入某个字符串中,即发送格式化输出到 string 所指向的字符串,直到出现字符串结束符 '\0' 为止。

╰つ栺尖篴夢ゞ 7174

C++ 字符串拼接 源码研究

C++字符串拼接有多种方式,不同方式原理和性能会有一些差异,本文进行一个小小归纳对比,如有疏漏错误,欢迎指出。 本文源码解析使用glibc-2.32版本。 C语言字符串拼接 1. 手工拼接操作 char *(char *dest, const char *src, size_t, n) { // 保存头部指针 char *s = dest; // 找到字符串末尾位置 s1 += strlen (dest); // 计算拼接长度 size_t ss = strnlen (src,

舍本逐末 1632

memcpy, memcpy()函数,字符串拷贝

memcpy: 头文件,函数原型,函数功能,函数返回值,说明

memcpy的三种用法

memcpy的三种用法

qq_51869479的博客 4804

字符串拷贝函数memcpy和strncpy以及snprintf 的性能比较

以下是对字符串拷贝函数memcpy和strncpy以及snprintf它们之间的性能进行了比较,需要的朋友可以过来参考下

AutoDL上传数据详细步骤(自己用的步骤,可能没有其他大佬用的那么高级)

AutoDL上传数据详细步骤(自己用的步骤,可能没有其他大佬用的那么高级)

孟孟单单的博客 7万+

在C语言中如何高效地复制和连接字符串?

就目前而言,在编程领域中,C语言的运用非常之多,它兼顾了高级语言的汇编语言的优点,相较于其它编程语言具有较大优势。 作者 |Martin Sebor 译者 |苏本如,责编 | 刘静 出品 | 优快云(ID:优快云news) 以下为译文: 在所有标准C语言<string.h>头文件中声明的字符串处理函数中,最常用的是那些用来复制和连接字符串的函数。这两组函数都...

优快云资讯 2390

S7-1200 Modbus TCP客户端配置实战:从基础设置到数据交互详解

本文详细介绍了S7-1200 Modbus TCP客户端的配置方法,从基础设置到数据交互的完整流程。涵盖硬件准备、TIA Portal配置、MB_CLIENT指令参数详解、数据缓冲区管理及实战测试,帮助工程师快速掌握西门子PLC与Modbus TCP通信的关键技术。

fire9的博客 311

【笔记】C_字符串输入输出以及string.h的基本用法

1.字符串长度问题。 字符串在内存中存储是以‘\0’结尾。 假设代码如下: #include <stdio.h> pragma warning(disable:4996) int main(){ char str1[5]="hello";//hello为5个字符 ... return 0; } 程序报错,E0144:"const char[6]"类型的值不能用于初始化char...

LSH1314521的博客 435

汇川EASY系列之以太网通讯(套接字socket做从站)

汇川EASY系列的以太网通讯中的Socket字通讯,不能使用配置的方式实现,只能通过指令完成,本文将详细说明

这是一个长期关注工控行业技术的博客,实现0-1的突破,期待您的关注和留言 3002

人形机器人硬件电路设计入门

人形机器人属于。

blotemj.blog.youkuaiyun.com 229

【C语言】自己代码实现字符串相关的常用API

【C语言】自己代码实现字符串相关的常用API

咖喱年糕的博客 572

【YOLOv11多模态融合改进】(可见光+红外)涉及像素级融合、特征级融合(中期、中后期、后期)、决策级融合的完整配置步骤以及二次改进方案

在网络输入阶段将多模态数据直接合并,形成统一的特征表示。

Limiiiing的博客 1968

C++语言字符串处理函数

C++语言提供了比C语言更丰富的字符串处理功能。它可以在字符串上经行输入,输出,合并,修改,比较,转换,复制,搜索等操作。使用这些现成的功能可以大大减少我们的编程的负担。 输入和输出的字符串函数,如printf,puts,cout,scanf,gets,cout等,在使用时应包含头文件cstdio,并使用其他字符串函数包含头文件cstring。cstring是一个专门用于处理字符串的头文件。它包含...

海螺HL的博客 14万+

【技术科普】破解政务跨系统数据壁垒!亘川一网统管平台多源数据同步技术解析

本文解析亘川一网统管平台多源数据同步技术,针对政务跨系统数据壁垒难题,介绍组件的数据采集、校验、审计留痕等核心能力,结合营商环境项目落地案例,对比传统开发模式差异,讲解开源组件的实践价值,为政务项目开发者提供落地参考。

weixin_67440240的博客 635

[QMT量化交易小白入门]-五十、十年基本保证每年盈利,全天ETF候稳稳的幸福

全局参数raise_rate = -1 # 触发rebalance的上涨比例period: 设定为22,表示每22个交易日执行一次调仓(即大约每月一次)。这是策略的时间框架基础。raise_rate: 初始值设为-1,意味着默认情况下不会因为资产的涨幅而触发调仓。这一参数用于控制是否基于资产表现动态调整仓位。run_count: 用于记录策略运行的次数,帮助判断何时执行定期调仓。1、为了简便计算,回撤时将调仓再平衡是先卖出再买入,没有比较持仓,实盘时是需要计算的,减少交易费用。

木头大左的博客 807

【C语言】字符函数与字符串函数详解

本文详细介绍C语言中字符与字符串处理的库函数。涵盖字符分类函数转换函数,以及strlen、strcpy、strcat、strcmp等字符串函数,还包括带长度限制的strncpy等及strstr、strtok、strerror等函数。阐述各函数功能、使用方法,提供示例及部分函数的模拟实现,助读者掌握这些基础且重要的函数,提升编程效率。

记录了从0学习Java技术栈的日常 1816

辐射制冷无规散射结构非球形散射体的结构优化与设计准则

本文针对辐射制冷材料中非球形散射体的光散射特性开展研究,提出了一种基于体积散射截面和不对称因子的综合评价方法。通过建立简化模型分析球体、圆柱体、长方体等六种几何形状在太阳波段的散射性能,发现金字塔形和圆锥形具有更强的后向散射能力。研究创新性地提出"反射因子SR=S(1-g)"这一评价参数,该参数与宏观反射率高度相关,为非球形散射体的优化设计提供了定量依据。仿真结果表明,合理选择散射体形状可显著提升辐射制冷材料的太阳反射率,为实现高效被动制冷提供了新的结构设计思路。

huanghm88的专栏 79

C语言字符、字符串函数(strlen、strcpy、strcat、strcmp、strstr的使用及模拟实现和strncpy、strncat、strnmap、strtok、strerror的使用)

本文包括以下几部分内容: 一.strlen、strcpy、strcat、strcmp函数的使用和模拟实现 二.strncpy、strncat、strnmp函数的使用 三.strstr函数的使用和模拟实现 四.strtok、strerror、perro函数的使用 函数的模拟实现可以帮助可以帮助我们更加深刻的理解函数,方便我们去使用今天来介绍有关于字符的相关函数,希望对大家有所帮助。

2302_82004664的博客 1720

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

C语言_0318笔记_字符串函数:#include<string.h>:strcmp比较大小/strcpy复制/strcat连接/strchr查找

计科人的回炉重造

Shmily_as33的博客 581

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C语言中的strcpy和strcat函数

C语言风格的字符串在cpp文件中,要写cstring头文件. strcpy的作用是:将一个字符串的内容拷贝到另一个字符串; strcat的作用是:将字符串的内容拼接到另一个字符串之后. 再补充一个长得类似的函数:strcmp函数 strcmp函数的作用相当于C++中的><和==,是用来比较两个字符串的大小滴! 下面是strcpy与strcat的代码示例: #include <iostream> #include<cstring> using namespace std;

敖丙007的博客 1675

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

str函数

有这么一类函数,他是针对于字符串的,因为字符串是以'\0'作为结束标志的,而str函数是靠'\0'终止的,没'\0'会越界。头文件<string.h>

zmzmzmalo的博客 969

C语言字符函数和字符串函数

本文系统梳理C语言字符与字符串操作函数,涵盖分类、转换及核心字符串函数的功能解析与实现。主要内容包括:字符分类函数(如islower)和转换函数(如toupper)的用法;字符串长度计算函数strlen、拷贝strcpy、追加strcat、比较strcmp的功能特点及模拟实现;安全版本函数strncpy、strncat、strncmp的使用规范与实现;字符串查找函数strstr的原理及复杂模拟逻辑;以及字符串分割函数strtok的使用方法与注意事项。通过对比标准库函数特性与手动实现代码,帮助理解字符串操作的

2401_86982201的博客 1025

C语言基础:数组(三)

char 数组名[行数][每行字符数];,其中 “行数” 表示可存储的字符串数量,“每行字符数” 表示单个字符串的最大长度(含\0// 5行32列,每行可存31个有效字符 + 1个'\0'其使用场景包括:存储命令列表、用户名称集合、多行文本等。标准库函数虽便捷,但理解其底层实现能帮助我们更好地掌握字符串操作的本质。// 计算从str开头到'\0'的字符数(不含'\0')= '\0') {len++;return len;// 将src拷贝到dst,返回dstint i = 0;

m0_74911141的博客 635

C语言字符串函数手写实现原理与内存安全

字符串在C语言中本质是内存中以'\0'结尾的字符序列,其操作函数如strlen、strcpy等并非黑盒API,而是直接映射到底层内存访问逻辑。理解指针遍历、边界检查、空指针处理及缓冲区约束,是避免越界、崩溃与安全漏洞的关键。这些函数体现C语言‘信任程序员’的设计哲学——不自动防护,但提供精确控制能力。典型应用场景包括嵌入式开发、RTOS环境、安全敏感系统及底层调试。掌握其手写实现,实质是建立对内存布局、CPU指令执行和ABI契约的具象认知,而非单纯代码复现。

weixin_34032621的博客 417

C语言字符串处理函数

C语言字符串处理函数

Elanie1024的博客 562
上一篇: 一个microsoft的.exe程序的启动过程(转)
下一篇: 交互式服务编程的项目心得及总结
rptrpt
博客等级 码龄19年 8粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值