strcpy和memcpy的差别
strcpy和memcpy都是标准C库函数。它们有以下的特点。
strcpy提供了字符串的复制。
即strcpy仅仅用于字符串复制。而且它不仅复制字符串内容之外,还会复制字符串的结束符,strcpy_s更安全。
已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);
返回值是char*是为了链式表达。
memcpy提供了一般内存的复制。即memcpy对于须要复制的内容没有限制,因此用途更广。
void *memcpy( void *dest, const void *src, size_t count );
char *strcpy(char *const char *//{ if ((src==NULL)||(dest//推断參数src和dest的有效性 { return NULL; } char *strdest=dest; //保存目标字符串的首地址 while ((*strDest++'\0');//把src字符串的内容拷贝到dest下 return strdest;}
strcpy_s是strcpy的安全版本号,它之所以安全,是由于其在拷贝字符串的时候会有越界的检查工作。下面是strcpy_s的实现代码,在tcscpy_s.inl文件能够找到:
_FILL_STRING完毕在字符串最后加上null结束符的工作 void *memcpy(void *memTo,const void *memFrom,size_t size){ if((memTo==NULL)||(memFrom//memTo和memFrom必须有效 return NULL; char *tempFrom=(char *)memFrom; //保存memFrom首地址 char *tempTo=(char *)memTo; //保存memTo首地址 while(size-->0) //循环size次,复制memFrom的值到memTo中 *tempTo++=*tempFrom++ return memTo;} |
strcpy和memcpy主要有下面3方面的差别。
1、复制的内容不同。strcpy仅仅能复制字符串,而memcpy能够复制随意内容,比如字符数组、整型、结构体、类等。
2、复制的方法不同。strcpy不须要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以easy溢出。
memcpy则是依据其第3个參数决定复制的长度。
3、用途不同。通常在复制字符串时用strcpy。而须要复制其它类型数据时则一般用memcpy
strcpy和memcpy的差别的更多相关文章
- sprintf、strcpy 及 memcpy 函数区别
这些函数的区别在于 实现功能 以及 操作对象 不同.strcpy 函数操作的对象是 字符串 ,完成 从 源字符串 到 目的字符串 的 拷贝 功能. sprintf 函数操作的对象 不限于字符串 :虽然 ...
- strcpy sprintf memcpy 它们之间的区别
strcpy,sprintf,memcpy的区别 strcpy 函数操作的对象是 字符串,完成 从 源字符串 到 目的字符串 的 拷贝 功能. snprintf 函数操作的对象 不限于字符串:虽然目 ...
- strcpy和memcpy的区别(转载)
strcpy和memcpy都是标准C库函数,它们有下面的特点.strcpy提供了字符串的复制.即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符. 已知strcpy函 ...
- strcpy vs memcpy
[本文连接] http://www.cnblogs.com/hellogiser/p/strcpy_vs_memcpy.html [分析] strcpy和memcpy都是标准C库函数,它们有下面的特点 ...
- 【转】 strcpy和memcpy的区别
strcpy和memcpy都是标准C库函数,它们有下面的特点.strcpy提供了字符串的复制.即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符. 已知strcpy函 ...
- 关于strcpy和memcpy
strcpy和memcpy都是标准C库函数,它们有下面的特点. strcpy提供了字符串的复制.即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符.已知strcpy函 ...
- strcpy和memcpy的区别
strcpy和memcpy都是标准C库函数,它们有下面的特点.strcpy提供了字符串的复制.即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符. 已知strcpy函 ...
- strcpy与memcpy的区别
strcpy和memcpy的区别 strcpy和memcpy都是标准C库函数,它们有下面的特点. strcpy提供了字符串的复制.即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制 ...
- strcpy()、memcpy()、memmove()、memset()的内部实现
一直想知道 strcpy().memcpy().memmove().memset()的内部实现 strcpy(), 字符串拷贝. char *strcpy(char *strDest, const c ...
随机推荐
- 域名调整 SEO优化(nginx)
=============================================== 2019/3/31_第1次修改 ccb_warlock == ...
- X-Forwarded-For 的一些理解
X-Forwarded-For 是一个 HTTP 扩展头部, 主要是为了让 Web 服务器获取访问用户的真实 IP 地址(其实这个真实未必是真实的,后面会说到). 那为什么 Web 服务器只有通过 X ...
- Python-2d形变 动画 表格
一.形变 /*1.形变参考点: 三轴交界点*/ transform-origin: x轴坐标 y轴坐标; /*2.旋转 rotate deg*/ transform: rotate(720deg); ...
- vue scoped 穿透_vue 修改内部组件样式问题
何为scoped? 在vue文件中的style标签上,有一个特殊的属性:scoped.当一个style标签拥有scoped属性时,它的CSS样式就只能作用于当前的组件,也就是说,该样式只能适用于当前组 ...
- 洛谷P4281 紧急会议
传送门啦 思路: $ Lca $ 这个题要求这个显而易见吧.但是难就难在怎么在树上利用 $ Lca $ 去解决三个点的问题. 首先明确三个点两两的 三个 $ Lca $ 中有一对是相等的,我们也会发现 ...
- 使用siege执行压力测试
没有安装siege? 可参考我的另一篇博客 使用siege执行压力测试笔记 场景分析 使用siege对https://www.baidu.com/进行加压. 要求 模拟20个用户同时访问 一共跑3个循 ...
- LeetCode | Reverse Words in a String(C#)
题目: Given an input string, reverse the string word by word. For example,Given s = "the sky is b ...
- 使用SqlSugar 4.X的T4生成实体类
<#@ template debug="false" hostspecific="true" language="C#" #> ...
- 【NPM】npm ERR! Unexpected end of JSON input while parsing near '...",'解决方案
问题描述 今天安装项目依赖npm install 的时候出现错误: npm ERR! Unexpected end of JSON input while parsing near '...e&quo ...
- 5.Django|模型层--多表关系
多表操作 文件为 ----> orm2 数据库表关系之关联字段与外键约束 一对多Book id title price publish email addr php 人民出版社 北京 pyth ...