原型:extern void *memcpy(void *dest, void *src, unsigned int count);
头文件:#include <string.h>
功能:由src所指内存区域复制count个字节到dest所指内存区域。
说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。
举例:
// memcpy.c
#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[])
{
char *s="Golden Global View";
char d[20];
clrscr();
memcpy(d,s,strlen(s));
d[strlen(s)]='/0';
printf("%s",d);
getchar();
return 0;
}
截取view
#include <string.h>
int main(int argc, char* argv[])
{
char *s="Golden Global View";
char d[20];
memcpy(d,s+14,4);
//memcpy(d,s+14*sizeof(char),4*sizeof(char));也可
d[5]='/0';
printf("%s",d);
getchar();
return 0;
}
输出结果:
View
初始化数组
char msg[10];
memcpy(msg,0,sizeof(msg));
///////////////////////////////////////////////////////////////////////////////
指点strcpy和memcpy到底有什么不同
///////////////////////////////////
答:strcpy自动检查字符串结束,就是/0结束符; memcpy需要你来指定拷贝的长度,他不检查/0结束符. strcpy两个参数,memcpy三个参数. strcpy效率低,memcpy效率高.
答:strcpy的参数是字符指针(字符串), memcpy的参数是void指针,因此它不仅能复制字符串,而且可以复制其它类型的数据(但要给出复制的字节数)..
答:strcpy是字符串拷贝,在源出现'/0'时结束拷贝;memcpy是内存拷贝,由源拷贝指定长度(单位大小×数量)的内存到目标。
答:memcpy要指定长度啊,strcpy自动拷贝到字符串结束
答:strcpy拷贝到/0为止memcpy拷贝指定的长度
/////////////////////////////////////////////////////////////////////////////////////////
memmove()和 memcpy()
如果源和目的参数有重叠, memmove() 提供有保证的行为。而 memcpy() 则不能提供这样的保证, 因此可以实现得更加有效率 |