函数原型

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

功能

由src指向地址为起始地址的连续n个字节的数据复制到以destin指向地址为起始地址的空间内。

头文件

#include<string.h>

返回值

  函数返回一个指向dest的指针。

说明

  1.source和destin所指内存区域不能重叠,函数返回指向destin的指针。

  2.与strcpy相比,memcpy并不是遇到'\0'就结束,而是一定会拷贝完n个字节。

memcpy用来做内存拷贝,你可以拿它拷贝任何数据类型的对象,可以指定拷贝的数据长度;

例:

  char a[], b[];
  memcpy(b, a,sizeof(b)); //注意如用sizeof(a),会造成b的内存地址溢出。   strcpy 就只能拷贝字符串了,它遇到'\0'就结束拷贝;例:   char a[], b[];
strcpy(a,b);

  3.如果目标数组destin本身已有数据,执行memcpy()后,将覆盖原有数据(最多覆盖n)。如果要追加数据,则每次执行memcpy后,要将目标数组地址增加到你要追加数据的地址。

  //注意,source和destin都不一定是数组,任意的可读写的空间均可。

程序例

例1:

  作用:将s中的字符串复制到字符数组d中。

  #include<stdio.h>
  #include<string.h>   int main(void)
  {     char*s="Golden Global View";     char d[];     clrscr();     memcpy(d,s,strlen(s));     d[strlen(s)]='\0';//因为从d[0]开始复制,总长度为strlen(s),d[strlen(s)]置为结束符     printf("%s",d);     getchar();     return0;   }

  输出结果:GoldenGlobal View

例2:

  作用:将s中第14个字符开始的4个连续字符复制到d中。(从0开始)

  #include<string.h>

  int main(void)
  {     char*s="Golden Global View";     char d[];     memcpy(d,s+,);//从第14个字符(V)开始复制,连续复制4个字符(View)     d[]='\0';     printf("%s",d);     getchar();     return0;   }

  输出结果: View

例3:

  作用:复制后覆盖原有部分数据 

#include<stdio.h>

  #include<string.h>

  int main(void)
  {    char src[] = "******************************";    char dest[] = "abcdefghijlkmnopqrstuvwxyz0123as6";    printf("destinationbefore memcpy: %s\n", dest);    memcpy(dest,src, strlen(src));    printf("destinationafter memcpy: %s\n", dest);    return0;   }

  输出结果:

  destinationbefore memcpy:abcdefghijlkmnopqrstuvwxyz0123as6

  destinationafter memcpy: ******************************as6

memcpy用法的更多相关文章

  1. C memcpy()用法

    https://blog.csdn.net/qq_21792169/article/details/50561570

  2. memcpy字节序问题

    /* memcpy用法详解 */ #include <stdio.h> #include <stdlib.h> #include <string.h> //memc ...

  3. memcpy函数用法

    memcpy函数用法 .分类: VC++ VC++ mfc matlab 2011-12-01 19:17 14538人阅读 评论(0) 收藏 举报 null 原型:extern void *memc ...

  4. memcpy的用法总结

    1.memcpy 函数用于 把资源内存(src所指向的内存区域) 拷贝到目标内存(dest所指向的内存区域):拷贝多少个?有一个size变量控制拷贝的字节数:函数原型:void *memcpy(voi ...

  5. 转: memcpy的用法总结

    1.memcpy 函数用于 把资源内存(src所指向的内存区域) 拷贝到目标内存(dest所指向的内存区域):拷贝多少个?有一个size变量控制拷贝的字节数:函数原型:void *memcpy(voi ...

  6. 转:memcpy的用法总结

    1.memcpy 函数用于 把资源内存(src所指向的内存区域) 拷贝到目标内存(dest所指向的内存区域):拷贝多少个?有一个size变量控制拷贝的字节数:函数原型:void *memcpy(voi ...

  7. memcpy函数的用法以及实现一个memcpy函数

    memcpy的用法 在项目中经常用到memcpy来实现内存的拷贝工作,如下代码片段 memcpy( pData, m_pSaveData_C, iSize * sizeof( unsigned sho ...

  8. memset,memcpy,memcmp用法

    void* memset(void *s, int ch, size_t n); 将s所指向的某一块内存中的前n个字节的内容全部设置为ch指定的ASCII值. 例如:memset(lpMyStruct ...

  9. memcpy的用法及实现

    memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中,返回dest所指内存地址的起始位置. #include <string.h&g ...

随机推荐

  1. Flex布局(转载)

    网页布局(layout)是 CSS 的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂 ...

  2. 【转】在Linux下使用Jmeter执行测试任务

    想在Linux下运行jmeter必须先安装jdk,安装步骤如下: (1).下载一个linux可用的jdk包(比如:jdk-6u45-linux-i586.bin), (2).然后将jdk-6u45-l ...

  3. PHPCMS分页原理

    调用很方便,使用listinfo方法,如果小于1页不会返回分页字符串 $page = $_GET['page'] ? intval($_GET['page']) : '1'; $products = ...

  4. oracle 12c使用问题总结

    1.无法登录 安装完毕只能使用system和sys用户,用安装时配置的密码登录:不能使用默认密码 2.远程无法访问 1)检测服务器配置 lsnrctl status 看到(DESCRIPTION=(A ...

  5. Python3之itertools模块

    Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数. 1.Infinite Iterators Iterator Arguments Results Example cou ...

  6. oracle中,约束、表名、Index等的名称长度限制最大只能30个字符

    oracle中,约束.表名.Index等的名称长度限制最大只能30个字符

  7. js 鼠标点击文本框 提示文字消失

    onfocus="if(this.value==defaultValue) {this.value='';}" onblur="if(!value) {value=def ...

  8. Oracle11g-BBED安装

    oracle 11g中缺bbed包 下载地址: https://pan.baidu.com/s/19DVvIajarDjnynILNwQDWQ 密码:tmqt 1.BBED的安装 1.上传(sbbdp ...

  9. ubuntu主目录下的中文文件夹名改回英文

    linux下经常用命令行,目录有中文输起来非常麻烦,想把他改回英文于是登录的时候选择英文发现没装英文语言环境,为这个重新装麻烦,只能再想办法 找了一下发现传话里有个用户文件夹更新,命令是xdg-use ...

  10. telnet测试端口是否正常打开

    点击计算机的开始菜单-->运行 ,输入CMD命令,然后确定.打开cmd命令行.   输入telnet测试端口命令: telnet IP 端口 或者 telnet 域名 端口 回车   如果端口关 ...