memcpy函数详解
函数原型:void *memcpy(void*dest, const void *src, size_t n);
用法:#include<string.h>
功能:从源src所指的内存地址的起始位置开始,拷贝n个字节的数据到目标dest所指的内存地址的起始位置中。
说明:
1)src和dest所指内存区域不能重叠,函数返回指向dest的指针。如果src和dest以任何形式出现了重叠,它的结果是未定义的。
2)与strcpy相比,memcpy遇到’\0’不结束,而且一定会复制完n个字节。只要保证src开始有n字节的有效数据,dest开始有n字节内存空间就行。
3)如果目标数组本身已有数据,执行memcpy之后,将覆盖原有数据(最多覆盖n个)。
如果要追加数据,则每次执行memcpy()后,要将目标地址增加到要追加数据的地址。
4)source和destin都不一定是数组,任意的可读写的空间均可。
实现memcpy库函数:
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
void *memory(void *dst,const void *src,size_t s)
{const char* psrc=static_cast<const char*>(src);char* pdst=static_cast<char*>(dst);if(psrc==NULL||pdst==NULL)return NULL;if(pdst>psrc&&pdst<(psrc+s)){for(size_t i=s-1;i!=-1;i--)pdst[i]=psrc[i];}else{for(size_t i=0;i<s;++i)pdst[i]=psrc[i];}return dst;
}
int main()
{char buf[100]="abcdefghijk";memory(buf+2,buf,5);printf("%s\n",buf+2);return 0;
}
则输出为abcdehijk。
memcpy函数详解相关推荐
- memcpy 函数详解
原型:extern void *memcpy(void *dest, void *src, unsigned int count); 用法:#include <string.h> 功能:由 ...
- linux memcpy需要头文件,memcpy函数详解
说明: 1.source和destin所指内存区域不能重叠,函数返回指向destin的指针. 2.如果目标数组destin本身已有数据,执行memcpy()后,将覆盖原有数据(最多覆盖n).如果要追加 ...
- memcpy函数详解 看这一篇就够了-C语言(函数讲解、 使用用法举例、作用)
memcpy()函数用于:复制内存块 函数介绍 函数声明:void * memcpy ( void * destination, const void * source, size_t num ); ...
- 【C库函数】memcpy函数详解
目录 memcpy 函数原型 参数讲解 返回值讲解 函数讲解(三个注意点) memcpy 拷贝内存块到目标空间 函数原型 void *memcpy( void *dest, const void *s ...
- 赶紧来修炼内功发~内存函数详解大全-memcpy、memmove、memcmp
目录 1. memcpy EX: PS: 模拟实现: 2. memmove EX: 编辑 模拟实现: 3. memcmp EX: PS: 模拟实现: 4. memset EX: 模拟实现: 1. m ...
- 字符函数和字符串函数详解(二)strncpy strncat strncmp strstr strtok(及其模拟实现)
系列文章目录 字符函数和字符串函数详解(一)strlen strcpy strcat strcmp 字符函数和字符串函数详解(二)strncpy strncat strncmp strstr str ...
- Memset 函数详解
Memset函数详解 需要的头文件 在C中<string.h> 在C++中<cstring> 函数介绍 memset 原型:extern void *memset(void * ...
- C语言网络编程:accept函数详解
文章目录 前言 函数描述 代码实例 如何得到客户端的IP 和 端口号 前言 当使用tcp服务器使用socket创建通信文件描述符,bind绑定了文件描述符,服务器ip和端口号,listen将服务器端的 ...
- 【FFmpeg】函数详解(三)
FFmpeg函数详解 14.av_write_frame 15.av_interleaved_write_frame 16.av_write_trailer 17.avio_close 18.av_i ...
最新文章
- js 数组 实现 完全树_算法和数据结构 | 树状数组(Binary Indexed Tree)
- 值传递和引用传递的讲解
- python作品讲解_python实例作品
- java scan hbase_hbase+java实例,Scan查询所有、get根据rowkey查询一行或一列数据
- Sybase数据库技术,数据库恢复---分享Sybase数据库知识(博客文章索引@51cto)
- 把Faster-RCNN的原理和实现阐述得非常清楚
- python在windows上创建虚拟环境
- Google登陆集成笔记-含坑
- 【SDCC 2016】未来应用,IBOS、爱范儿、滴滴出行、腾讯云的微信开发之路
- 计算机考研统考压分吗,担忧!考研初试会被压分吗?
- 计算机求数值公式,excel表格常用技巧大全/EXCEL表格常用的计算公式
- 微信多开脚本2.0 批处理bat,可一键关闭微信
- mysql修改校对集_mysql数据库的基本操作(增删改查、字符集、校对集)
- 用Python画漂亮的专业插图 ?So easy!
- ivue-admin Table单元格内换行问题
- C语言九条语句经典例题,一起温故而知新!!!
- 中文键盘 linux,键盘和中文输入 教程
- php activemq实例,php操作ActiveMQ - 小周博客,小周个人博客,程序猿小王子,技术博客,个人博客模板,php博客系统,设计模式,wzyl - 黑夜遮不住光亮...
- 三点法求点三维坐标实验
- 通过 叽歪 进行分类