写了一个memcpy函数,仅供参考:
#include <stdio.h> #include <string.h> #define TRUE 1 struct TEST { int m; char n; float g; struct TEST *t; double d; }; void* mymemcpy(void *dest,const void* src,int size); int main(void) { char arr[] = {'1','2','3','4','5'}; char arr1[] = {'a','b','c'}; int i = 0; struct TEST s; char* cp = NULL; printf("After execute memcpy:\n"); memcpy(&s,arr1,sizeof(s)); printf("%d %c %f %p %lf\n",s.m,s.n,s.g,s.t,s.d); cp = (char*)memcpy(arr,arr1,sizeof(arr1)); for(;i < 5;i ++) { printf("%c ",*cp ++); } putchar('\n'); printf("After execute mymemcpy:\n"); memcpy(&s,arr1,sizeof(s)); printf("%d %c %f %p %lf\n",s.m,s.n,s.g,s.t,s.d); cp = (char*)mymemcpy(arr,arr1,sizeof(arr1)); for(i = 0;i < 5;i ++) { printf("%c ",*cp ++); } getchar(); return 0; } void* mymemcpy(void *dest,const void* src,int size) { char *dptr = (char*)dest; char *sptr = (char*)src; int i = 0; assert(((dptr > sptr) && (dptr < sptr + size))|| ((dptr < sptr) && (dptr > sptr - size))|| (dptr != NULL)||(sptr != NULL)); for(i = 0;i < size;i ++) { *dptr ++ = *sptr ++; } return dest; }