c语言内存拷贝 memcpy()函数

Posted Dontla

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言内存拷贝 memcpy()函数相关的知识,希望对你有一定的参考价值。

需包含头文件:C 标准库 - <string.h>

描述

C 库函数 void *memcpy(void *str1, const void *str2, size_t n) 从存储区 str2 复制 n 个字节到存储区 str1。

声明

下面是 memcpy() 函数的声明。

void *memcpy(void *str1, const void *str2, size_t n)

参数

str1 -- 指向用于存储复制内容的目标数组,类型强制转换为 void* 指针。
str2 -- 指向要复制的数据源,类型强制转换为 void* 指针。
n -- 要被复制的字节数。

返回值

该函数返回一个指向目标存储区 str1 的指针。

实例1

下面的实例演示了 memcpy() 函数的用法。

// 将字符串复制到数组 dest 中
#include <stdio.h>
#include <string.h>
 
int main ()

   const char src[50] = "http://www.runoob.com";
   char dest[50];
 
   memcpy(dest, src, strlen(src)+1);
   printf("dest = %s\\n", dest);
   
   return(0);

运行结果:

dest = http://www.runoob.com

实例2

#include <stdio.h>
#include<string.h>

int main()


	const char* s = "http://www.runoob.com";
	char d[20];
	memcpy(d, s + 11, 6);// 从第 11 个字符(r)开始复制,连续复制 6 个字符(runoob)
	// 或者 memcpy(d, s+11*sizeof(char), 6*sizeof(char));
	d[6] = '\\0';
	printf("%s", d);
	return 0;

运行结果:

runoob

实例3:覆盖原有部分数据

#include<stdio.h>
#include<string.h>

int main(void)

	char src[] = "***";
	char dest[] = "abcdefg";
	printf("使用 memcpy 前: %s\\n", dest);
	memcpy(dest, src, strlen(src));
	printf("使用 memcpy 后: %s\\n", dest);
	return 0;

运行结果:

使用 memcpy 前: abcdefg
使用 memcpy 后: ***defg

参考文章:C 库函数 - memcpy()

以上是关于c语言内存拷贝 memcpy()函数的主要内容,如果未能解决你的问题,请参考以下文章

C语言内存操作函数

C语言 memcpy 函数

梦开始的地方 —— C语言内存函数memcpy-memmove-memset(使用+模拟实现)

c语言中strcpy跟mencpy哪个效率更高?

编写一个C语言的内存拷贝函数,把源地址的指定长度的数据拷贝到目标地址,考虑8,16,32位数据位宽

memcpy和strcpy的区别