博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
strcpy和memcpy的区别《转载》
阅读量:7224 次
发布时间:2019-06-29

本文共 1136 字,大约阅读时间需要 3 分钟。

 

strcpy和memcpy都是标准C库函数,它们有下面的特点。

strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。

已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);

memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。
void *memcpy( void *dest, const void *src, size_t count );

char 
*
strcpy
(
char 
* dest,
const 
char 
* src)
// 实现src到dest的复制
{
  
if 
((src == NULL) || (dest == NULL))
//判断参数src和dest的有效性
  {
 
      
return 
NULL;
  }
  
char 
*strdest = dest;       
//保存目标字符串的首地址
  
while 
((*strDest++ = *strSrc++)!=
'\0'
);
//把src字符串的内容复制到dest下
  
return 
strdest;
}
void 
*
memcpy
(
void 
*memTo,
const 
void 
*memFrom,
size_t 
size)
{
  
if
((memTo == NULL) || (memFrom == NULL))
//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"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。
3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy

 

转载于:https://www.cnblogs.com/liuzongqi/p/3336675.html

你可能感兴趣的文章
【工业串口和网络软件通讯平台(SuperIO)教程】一.通讯机制
查看>>
[图文教程]阿里云万网域名一键签发SSL证书 快捷申请免费SSL证书
查看>>
区块链简介
查看>>
大谷无人机将追求“才貌双全”
查看>>
量子世界的十个事实
查看>>
U-Boot启动过程完全分析
查看>>
Web性能优化工具WebPageTest(二)——性能数据
查看>>
Lucene 6.0中BooleanQuery
查看>>
数据库反规范设计
查看>>
Oracle数据库在线备份原理
查看>>
mysql基础(六)mysql事务
查看>>
Visual Studio "14" CTPs
查看>>
云栖科技评论第28期:高通宣布芯片内置亚马逊Alexa
查看>>
扫描二维码自动识别手机APP下载地址
查看>>
分享Ubuntu下一些很棒的软件(一)
查看>>
bootstrap-内联文本元素-改变大小写
查看>>
SQL Server 2016新特性:Temporal Table
查看>>
阿里云MaxCompute香港开服 将引入更多人工智能服务
查看>>
你的指纹还安全吗? - BlackHat 2015 黑帽大会总结 day 2
查看>>
2、SRX笔记及基础配置
查看>>