深入理解strcpy与memcpy的区别

 更新时间:2013年05月28日 15:52:23   作者:  
本篇文章是对strcpy与memcpy的区别进行了详细的分析介绍,需要的朋友参考下
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
您可能感兴趣的文章:

相关文章

  • 深入了解C语言结构化的程序设计

    深入了解C语言结构化的程序设计

    这篇文章主要介绍了C语言编程中程序的一些基本的编写优化技巧,文中涉及到了基础的C程序内存方面的知识,非常推荐!需要的朋友可以参考下
    2021-07-07
  • C++制作《游戏内存外挂》详解

    C++制作《游戏内存外挂》详解

    这篇文章主要介绍了C++制作《游戏内存外挂》详解,文中通过示例代码和图片介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • C语言中const和C++中的const 区别详解

    C语言中const和C++中的const 区别详解

    这篇文章主要介绍了C语言中const和C++中的const 区别详解的相关资料,需要的朋友可以参考下
    2017-04-04
  • C++ 设置控制台(命令行)窗口 光标位置,及前背景颜色

    C++ 设置控制台(命令行)窗口 光标位置,及前背景颜色

    这篇文章主要介绍了C++ 设置控制台(命令行)窗口 光标位置,及前背景颜色,需要的朋友可以参考下
    2019-04-04
  • C++实现图书馆管理系统

    C++实现图书馆管理系统

    这篇文章主要为大家详细介绍了C++实现图书馆管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • C/C++通过IP获取局域网网卡MAC地址

    C/C++通过IP获取局域网网卡MAC地址

    这篇文章主要为大家详细介绍了C++如何通过Win32API函数SendARP从IP地址获取局域网内网卡的MAC地址,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-02-02
  • Opencv获取身份证号码区域的示例代码

    Opencv获取身份证号码区域的示例代码

    这篇文章主要介绍了Opencv获取身份证号码区域的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • C语言用fun函数实现两个数的交换方式

    C语言用fun函数实现两个数的交换方式

    这篇文章主要介绍了C语言用fun函数实现两个数的交换方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • C语言快速排序与二分查找算法示例

    C语言快速排序与二分查找算法示例

    这篇文章主要介绍了C语言快速排序与二分查找算法,涉及C语言随机数生成、快速排序及二分查找等算法相关实现技巧,需要的朋友可以参考下
    2018-01-01
  • C语言实现简单登录操作

    C语言实现简单登录操作

    这篇文章主要为大家详细介绍了C语言实现简单登录操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06

最新评论