原型: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; }
相关函数:memccpy,memmove,strcpy
关于strcpy()与memcpy()比较:
在使用这两个函数中,平时大多都使用strcpy()而忽略了 memcpy(),
它们都是从缓冲区拷贝内容。
byte a[4];// 每一个字节赋数值类型
a[0]=0;
a[1]=1;
a[2]=0;
a[3]=1;
byte c1[4];
memcpy(c1, a, sizeof(byte)*4);
byte c2[4];
strcpy((char*)(byte*)c2, (char*)(byte*)a);
只有memcpy()处理的是正确的,所以拿来它们的函数原型比较一下:
char *strcpy( char *strDest, const char *strSource);
void *memcpy( void *dest, const void *src, size_t count );
可以看出 strcpy() 是处理的字符串(遇零结束),
memcpy() 是处理一个缓冲区(void*类型的),
而我们的内容中有数字0,
而数字0又是字符串的结尾字符 ' \0' 的数字表现,
字符串拷贝是遇到0就结束,
所以,如果要拷贝的缓冲区如果是非字符串那么就尽量用memcpy(),
这样可以避免出错的可能。