memset和memcpy和memcpy

1.函数原型

  void *memcpy(void *dest, const void *src, int n);
编辑本段
功能

  由src指向地址为起始地址的连续n个字节的数据复制到以dest指向地址为起始地址的空间内。
所需头文件

  #include <string.h>
编辑本段
返回值

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

  1.source和destin所指内存区域不能重叠,函数返回指向destin的指针。
  2.与strcpy相比,memcpy并不是遇到'\0'就结束,而是一定会拷贝完n个字节。
  3.如果目标数组destin本身已有数据,执行memcpy()后,将覆盖原有数据(最多覆盖n)。如果
要追加数据,则每次执行memcpy后,要将目标数组地址增加到你要追加数据的地址。
  //注意,source和destin都不一定是数组,任意的可读写的空间均可。---wk

2.函数简介

  原型:void *memmove( void* dest, const void* src, size_tcount );
  用法:#include <string.h>或#include <memory.h>
  功能:由src所指内存区域复制count个字节到dest所指内存区域。
  说明:src和dest所指内存区域可以重叠,但复制后dest内容会被更改。函数返回指向dest的指针

  相关函数:memset、memcpy
编辑本段
程序示例

  // memmove.c
  #include <stdio.h>
  #include <string.h>
  int main(void)
  {
  char s[]="Golden Global View";
  memmove(s,s+7,strlen(s)+1-7);
  printf("%s",s);
  getchar();
  return 0;
  }
3.需要的头文件

  在C中 <memory.h> or <string.h>
  在C++中 <cstring>
编辑本段
函数原型

  void *memset(void *s, int ch, size_t n);
  函数解释:将s中前n个字节替换为ch并返回s;
  memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一
种最快方法。

时间: 2024-09-27 09:01:58

memset和memcpy和memcpy的相关文章

提前认识软件开发(8) memset()与memcpy()函数

软件项目中的代码,少则数千行,多则上万行,但并非无规律可循.阅读了那么多代码之后,我发现有两个函数出现的频率很高,那就是memset()与memcpy()函数,它们都是C语言编程中经常要用到的.工作之余,我查了一些资料,现对它们作一个简单的说明. 1. memset()函数 (1)函数原型 void *memset( void *dest, int c, size_t count ). (2)函数作用 在MSDN中,将该函数的作用描述为:Sets buffers to a specified c

大并发服务器内存转换的灵活运用,memcpy的思考

在很多的网络开发中,经常会碰到一些内存转换,如下面的场景: #define PACKAGE_PARSE_ERROR -1 #define PACKAGE_PARSE_OK 0 int parse_package( int* a, int* b, int* c, int* d, char* buf, int buf_len ) { if( !buf || buf_len < 16 ){ return PACKAGE_PARSE_ERROR; } memcpy( a, buf, 4 ); memcp

对比C语言中memccpy()函数和memcpy()函数的用法_C 语言

C语言memccpy()函数:复制内存中的内容头文件: #include <string.h> 定义函数: void * memccpy(void *dest, const void * src, int c, size_t n); 函数说明:memccpy()用来拷贝src 所指的内存内容前n 个字节到dest 所指的地址上.与memcpy()不同的是,memccpy()会在复制时检查参数c 是否出现,若是则返回dest 中值为c 的下一个字节地址. 返回值:返回指向dest 中值为c 的下

memset()函数

memset需要的头文件 <memory.h> or <string.h> memset <wchar.h> wmemset  函数介绍 void *memset(void *s, int ch, size_t n); 函数解释:将s中前n个字节 (typedef unsigned int size_t)用 ch 替换并返回 s . memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法[1]. 常见错误 第一: 搞反了

memset,memcpy,strcpy 的区别

一.函数原型 strcpy extern char *strcpy(char *dest,char *src); #include <string.h> 功能:把src所指由NULL结束的字符串复制到dest所指的数组中 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串. 返回指向dest的指针 memcpy extern void *memcpy(void *dest,void *src,unsigned int count); #include &

让你提前认识软件开发(8):memset()与memcpy()函数

第1部分 重新认识C语言 memset()与memcpy()函数           软件项目中的代码,少则数千行,多则上万行,但并非无规律可循.阅读了那么多代码之后,我发现有两个函数出现的频率很高,那就是memset()与memcpy()函数,它们都是C语言编程中经常要用到的.工作之余,我查了一些资料,现对它们作一个简单的说明.         1. memset()函数         (1)函数原型         void *memset( void *dest, int c, size

浅析C++中memset,memcpy,strcpy的区别_C 语言

复制代码 代码如下: #include <stdio.h>#include <stdlib.h>#include <string.h>#include <assert.h> //memcpy:按字节复制原型:extern void* memcpy(void *dest,void *src,unsigned int count)//功能:由src所指内存区域复制count个字节到dest所指的内存区域://同strcpyvoid *memcpy_su(void

想成为优秀的程序员这些码德不能缺

我把这些看成是作为一个程序员的基本素质,多数是编码之外的事情: ●代码每天备份:(预防意外导致的任何损失) ●上传代码时写清楚log信息:(为维护这个模块的人着想,有可能是你自己) ●提供接口时不要把问题抛给使用接口的人,升级或者变更接口时不要删掉原来的接口:(为使用你接口的同事着想) ●变量命名要见名知意:(起码不能误导别人) ●在工程中新建一个doc文件夹将项目相关的文档放在该目录下,方便后面维护的人员理解项目和代码:(为维护这个模块的人着想,有可能是你自己) ●签署bug或者转办bug时写

【C语言】关于结构体最后的长度为0或1数组的思考

需要引起注意的:ISO/IEC 9899-1999里面,这么写是非法的,这个仅仅是GNU C的扩展,gcc可以允许这一语法现象的存在.但最新的C/C++不知道是否可以,我没有测试过.(C99允许.微软的VS系列报一个WARNING,即非常的标准扩展.) 结构体最后使用0或1的长度数组的原因,主要是为了方便的管理内存缓冲区,如果你直接使用指针而不使用数组,那么,你在分配内存缓冲区时,就必须分配结构体一次,然后再分配结构体内的指针一次,(而此时分配的内存已经与结构体的内存不连续了,所以要分别管理即申