memmove实现代码

1444阅读 0评论2012-02-04 vincent-cws
分类:LINUX

  1. /* file: main.c */
  2. #include <stdio.h>
  3. #include <stdlib.h>

  4. #define __assert(x)

  5. static void * __memmove (void * dest, const void *src, size_t len)
  6. {
  7.     __assert(dest&&src);
  8.     unsigned char* dest_p = (unsigned char*)dest;
  9.     const unsigned char* src_p = (const unsigned char*)src;
  10.     if (dest_p == src) return dest_p;
  11.     if (dest_p < src_p)
  12.         while (len--) *dest_p++ = *src_p++; /* copy from header */
  13.     else
  14.         while (len--) *(dest_p+len)=*(src_p+len); /* copy from tailer */
  15.     return dest_p;
  16. }

  17. #define COUNT 5

  18. int main(void)
  19. {
  20.     char* pnew;
  21.     int* array;
  22.     int i = 0;
  23.     array = (int*)malloc(sizeof(int)*COUNT);
  24.     __assert(array);
  25.     memset(array, 0, sizeof(int)*COUNT);
  26.     while (i < COUNT) {
  27.         array[i] = i;
  28.         i++;
  29.     }
  30.     for (i=0; i < COUNT; i++)
  31.         printf("%d ", array[i]);
  32.     printf("\n");
  33.     
  34.     __memmove(array+2, array, sizeof(int)*3);
  35.     for(i=0; i<COUNT; i++){
  36.         printf("%d\n",array[i]);
  37.     }
  38.     free (array);
  39. }
上一篇:求质素(素数)
下一篇:单链表的栈操作C实现