memcpy函数

memcpy

 

目录

函数原型
功能
所需头文件
返回值
说明
程序例
  1. example1
  2. example2
  3. example3
展开
函数原型
功能
所需头文件
返回值
说明
程序例
  1. example1
  2. example2
  3. example3
展开
 

编辑本段函数原型

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

编辑本段功能

从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中

编辑本段所需头文件

#include <string.h>

编辑本段返回值

函数返回dest的值。

编辑本段说明

1.source和destin所指内存区域不能重叠,函数返回指向destin的 指针。
2.strcpy和memcpy主要有以下3方面的区别。
2.1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。
2.2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。
2.3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy
3.如果目标 数组destin本身已有数据,执行memcpy()后,将覆盖原有数据(最多覆盖n)。如果要追加数据,则每次执行memcpy后,要将目标 数组地址增加到你要追加数据的地址。
注意:source和destin都不一定是 数组,任意的可读写的空间均可。

编辑本段程序例

example1

作用:将s中的字符串复制到字符数组d中。
// memcpy.c
#include <stdio.h>
#include <string.h>
int main()
{
char *s="Golden Global View";
char d[20];
clrscr();
memcpy(d,s,(strlen(s)+1));
printf("%s",d);
getchar();
return 0;
}
输出结果:Golden Global View

example2

作用:将s中第14个字符开始的4个连续字符复制到d中。(从0开始)
#include <string.h>
int main()
{
char *s="Golden Global View";
char d[20];
memcpy(d,s+14,4); //从第14个 字符(V)开始复制,连续复制4个字符(View)
//memcpy(d,s+14*sizeof(char),4*sizeof(char));也可
d[4]='\0';
printf("%s",d);
getchar();
return 0;
}
输出结果: View

example3

作用:复制后覆盖原有部分数据
#include <stdio.h>
#include <string.h>
int main(void)
{
char src[] = "******************************";
char dest[] = "abcdefghijlkmnopqrstuvwxyz0123as6";
printf("destination before memcpy: %s\n", dest);
memcpy(dest, src, strlen(src));
printf("destination after memcpy: %s\n", dest);
return 0;
}
输出结果:
destination before memcpy:abcdefghijlkmnopqrstuvwxyz0123as6
destination after memcpy: ******************************as6

你可能感兴趣的:(memcpy)