c-memcpy
来源:互联网 发布:用sql列出同表上下级 编辑:程序博客网 时间:2024/05/22 12:38
【FROM MSDN && 百科】原型: void *memcpy(void *dest, const void *src, size_t n);#include<string.h>功能:从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中Copies the values of num bytes from the location pointed by source directly to the memory block pointed by destination.The function does not check for any terminating null character in source - it always copies exactly num bytes.size_t is an unsigned integral type.返回值:.src和dest所指内存区域不能重叠,函数返回指向dest的指针。strcpy和memcpy区别如下:1.复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。2.用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy3.复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。DEMO:[cpp] view plaincopy//#define FIRST_DEMO //#define SECOND_DEMO //#define THIRD_DEMO #define MYMEMCPY //#define FORTH_DEMO #ifdef FIRST_DEMO #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> int main(void) { char *s="Golden Global View"; char d[20]; system("cls"); memcpy(d,s,(strlen(s)+1)); //将 s的字符串复制到数组d中 printf("%s\n",d); getch(); return 0; } #elif defined SECOND_DEMO #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> int main(void) { char *s="Golden Global View"; char d[20]; system("cls"); /*从第14个字符(V)开始复制,连续复制4个字符(View)*/ memcpy(d,s+14*sizeof(char),4*sizeof(char)); d[4]='\0'; //这个语句若不加,输出的字符中有未初化的字符,显示乱码。 printf("%s\n",d); getch(); return 0; } #elif defined THIRD_DEMO #include <stdio.h> #include <conio.h> #include <stdlib.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); getch(); return 0; } #elif defined MYMEMCPY #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> void *mymemcpy(void *dest,const void *src,size_t count); int main(void) { char src[] = "******************************"; char dest[] = "abcdefghijlkmnopqrstuvwxyz0123as6"; printf("destination before mymemcpy: %s\n", dest); mymemcpy(dest,src,strlen(src)); printf("destination after mymemcpy: %s\n", dest); getch(); return 0; } void *mymemcpy(void *dest,const void *src,size_t count) { char *ret=(char *)dest; char *dest_t=ret; const char *src_t=(char *)src; //append // while(*dest_t!='\0') // { // dest_t++; // } while(count--) { *dest_t++=*src_t++; } return ret; } #elif defined FORTH_DEMO #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> struct { char name[40]; int age; }person,person_copy; int main(void) { char myname[]="Pierre de Fermat"; printf("sizeof(myname)=%d\n",sizeof(myname)); printf("strlen(myname)=%d\n",strlen(myname)); memcpy(person.name,myname,strlen(myname)+1); person.age=48; memcpy(&person_copy,&person,sizeof(person)); printf("person_copy :%s,%d\n",person_copy.name,person_copy.age); getch(); return 0; } #endif
0 0
- c-memcpy
- C++memcpy
- c++memcpy
- 【c/c++】memcpy()函数
- c语言实现memcpy
- c语言实现memcpy
- C/C++中的memcpy
- C/C++中的memcpy
- c语言库函数:memcpy
- C中的 strftime , memcpy
- C语言实现memcpy
- C 函数 strncpy && memcpy
- [C++]memcpy 小记
- C语言 memcpy memmove
- 【C语言】 实现memcpy
- C语言memcpy()函数
- C memcpy()函数用法
- C/C++--memcpy函数实现
- 计算几何模板补充(三维空间体积、平面、直线、向量相关计算。附上hdu4741,求异面直线的最短距离与交点)
- Android中联系人和通话记录详解(联系人的增删改查)(3)
- “不死兔”与斐波那契数列
- 来自西弗吉利亚大学li xin整理的CV代码合集
- Makefile中的wildcard和patsubst
- c-memcpy
- Minimum Inversion Number
- 在系里服务器安装python module到自己的home目录
- (使用lua++)Lua脚本和C++交互(三)
- HBase rest
- linux获取网线插拔状态的实现
- stderr stdout stdin
- ssh-key配置
- git unpack failed: error Missing commit错误