原型:extern void *memcpy(void *dest, void *src, unsigned int count);

用法:#include <string.h>

功能:由src所指内存区域复制count个字节到dest所指内存区域。

说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。

举例:

// memcpy.c

#include <syslib.h>

#include <string.h>

main()

{

char *s="Golden Global View";

char d[20];

clrscr();

memcpy(d,s,strlen(s));

d[strlen(s)]=0;

printf("%s",d);

getchar();

return 0;

}

http://www.ggv.com.cn/forum/clib/string/memcpy.html此链接有许多字符串函数可以查询。

看下面这个代码:

void *memcpy(void *dest,void *src, unsigned int count)

{

assert((dest!=NULL)&&(src!=NULL));

if(dest==src)

return src;

char* d=(char*)dest;

char* s=(char*)src;

while(count--> 0)

*d++=*s++;

return dest;

}

这是一个memcpy的源代码,可以看看,在函数里面生成临时指针,这样不会改变原始指针

函数原型:extern void *memmove(void *dest, const void *src, unsigned int count)

参数说明:dest为目的字符串,src为源字符串,count为要拷贝的字节数。

所在库名:#include <string.h>

函数功能:将字符串src中的前n个字节拷贝到dest中。

返回说明:src和dest所指内存区域可以重叠,函数返回void*类型指针。 www.yueluo.net

其它说明:功能于memcpy相同。

不同的是,当src和dest所指的内存区域重叠时,memmove()仍然可以正确的处理,不过执行效率上会比使用memcpy()略慢些

memcpy()、 memmove()和memccpy()

-------------------------------------------------------

这三个函数的功能均是将某个内存块复制到另一个内存块。前两个函数的区别在于它们处理内存区域重叠(overlapping)的方式不同。第三个函数的功能也是复制内存,但是如果遇到某个特定值时立即停止复制。

对于库函数来说,由于没有办法知道传递给他的内存区域的情况,所以应该使用memmove()函数。通过这个函数,可以保证不会出现任何内存块重叠问题。而对于应用程序来说,因为代码“知道”两个内存块不会重叠,所以可以安全地使用memcpy()函数。

-------------------------------------------------------

#include <string.h>

#include <stdio.h>

int main()

{

char s[] = "zengxiaolong";

memmove(s, s+4, strlen(s)-4);

s[strlen(s)-4] = '\0';

printf("*s = %s\n", s);

return 0;

}

memcpy与strncpy区别

strncpy是把Num个字符从src复制到dest,但是如果遇到src字符结尾,那么复制提前结束,后面没有复制完的字符,不予以处理,当然dest,src地址不能重叠,

memcpy也是把Num个字符从src复制到dest,但是它是内存复制,不管是不是NULL,照样通吃

memcpy 函数详解相关推荐

  1. linux memcpy需要头文件,memcpy函数详解

    说明: 1.source和destin所指内存区域不能重叠,函数返回指向destin的指针. 2.如果目标数组destin本身已有数据,执行memcpy()后,将覆盖原有数据(最多覆盖n).如果要追加 ...

  2. memcpy函数详解 看这一篇就够了-C语言(函数讲解、 使用用法举例、作用)

    memcpy()函数用于:复制内存块 函数介绍 函数声明:void * memcpy ( void * destination, const void * source, size_t num ); ...

  3. 【C库函数】memcpy函数详解

    目录 memcpy 函数原型 参数讲解 返回值讲解 函数讲解(三个注意点) memcpy 拷贝内存块到目标空间 函数原型 void *memcpy( void *dest, const void *s ...

  4. memcpy函数详解

    函数原型:void *memcpy(void*dest, const void *src, size_t n); 用法:#include<string.h> 功能:从源src所指的内存地址 ...

  5. 赶紧来修炼内功发~内存函数详解大全-memcpy、memmove、memcmp

    目录 1. memcpy EX: PS: 模拟实现: 2. memmove EX: ​编辑 模拟实现: 3. memcmp EX: PS: 模拟实现: 4. memset EX: 模拟实现: 1. m ...

  6. 字符函数和字符串函数详解(二)strncpy strncat strncmp strstr strtok(及其模拟实现)

     系列文章目录 字符函数和字符串函数详解(一)strlen strcpy strcat strcmp 字符函数和字符串函数详解(二)strncpy strncat strncmp strstr str ...

  7. Memset 函数详解

    Memset函数详解 需要的头文件 在C中<string.h> 在C++中<cstring> 函数介绍 memset 原型:extern void *memset(void * ...

  8. C语言网络编程:accept函数详解

    文章目录 前言 函数描述 代码实例 如何得到客户端的IP 和 端口号 前言 当使用tcp服务器使用socket创建通信文件描述符,bind绑定了文件描述符,服务器ip和端口号,listen将服务器端的 ...

  9. 【FFmpeg】函数详解(三)

    FFmpeg函数详解 14.av_write_frame 15.av_interleaved_write_frame 16.av_write_trailer 17.avio_close 18.av_i ...

最新文章

  1. 欢迎加入北京智源AI社群
  2. static/final/常量模式
  3. activemq 延时队列以及不生效问题
  4. Sublime个性化配置
  5. c盘怎么清理到最干净_系统垃圾太多,怎么一键彻底清理干净
  6. 04_Java基础语法_第4天(数组)
  7. JDBC和数据库连接池的关系
  8. HTML5 History API让ajax能回退到上一页
  9. SQL 错误: Statement cancelled due to client request
  10. java发送通知栏样式_Android 通知栏Notification详解
  11. 《学会提问》读书笔记
  12. 【MaxCompute】MaxCompute 处理复杂json、json数组
  13. CA(电子签名)与HIS等医疗信息化系统的集成简介
  14. Teamcity 简单实践
  15. vue中在一个函数中调用另外一个函数
  16. 卸载idea2020不干净_强制卸载软件程序、清理注册表的好工具
  17. ffmpeg arm linux编译,arm linux 移植 ffmpeg 库 + x264 + x265
  18. WebGL简易教程(一):第一个简单示例
  19. 西北工业大学本科毕业论文答辩PPT模板
  20. uniapp开发短视频系统仿哔哩哔哩

热门文章

  1. matlab用抛物线族表示马鞍面,matlab画马鞍面
  2. Vultr VPS开放HTTP端口
  3. 【关于单片机的N多问题】关于单片机的N多问题
  4. excel表格怎么调整行高和列宽_如何在Excel中竖向批量插入图片,这个简单方法你知道吗...
  5. windows电脑上架app store的软件
  6. mysql slave duplicate entry_slave 报Duplicate entry for key
  7. UEA数据集和UCR数据集的处理
  8. 看完了 vue-cli 源码,总结了这几个点
  9. 什么是交叉检验(K-fold cross-validation)
  10. 已知圆柱体的底面半径c语言,C语言编程题带答案