模拟实现memcpy和memmmove

来源:互联网 发布:mysql 子查询不走索引 编辑:程序博客网 时间:2024/05/18 03:05
模拟实现memcpy#include <stdio.h>#include <windows.h>#include <stdlib.h>#include <assert.h>void* my_memcpy(void* dest, const void* src,size_t count){ void *ret = dest; assert(dest); assert(src); while(count) {  *(char *)dest = *(char *)src;  dest = (char *)dest+1;  src = (char *)src+1;  count--; } return ret;}int main(){ char arr[] = {"1234567890"}; char str[] = {"adasj ?"}; int sz = sizeof(arr)/sizeof(arr[0]); int i=0; char *ret=my_memcpy(arr,str,7); printf("%s\n",ret); system("pause"); return 0;}模拟实现memmove#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<string.h>void *my_memmove(void *dest,const void *src,size_t count){  void *ret = dest; assert(dest); assert(src); if((src<dest)&&((char*)dest<(char*)src+count)) {  while(count--)  {   *((char*)dest+count)=*((char*)src+count);  } } else {  while(count--)  {   *(char*)dest=*(char*)src;   dest=(char*)dest+1;   src=(char*)src+1;  } } return ret;}int main(){ int i=0; int arr[]={1,2,3,4,5,6,7,8,9,0}; int sz=sizeof(arr)/sizeof(arr[0]);    my_memmove(arr+3,arr,4*sizeof(int));    for(i=0;i<sz;i++) {  printf("%d ",arr[i]); } system("pause"); return 0;}


0 0
原创粉丝点击