memmove.c
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:1k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* memmove.c - memory move file for string */
  2. /* Copyright 1992-1993 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01c,25feb93,jdi  documentation cleanup for 5.1.
  7. 01b,20sep92,smb  documentation additions
  8. 01a,08jul92,smb  written and documented.
  9. */
  10. /*
  11. DESCRIPTION
  12. INCLUDE FILES: string.h
  13. SEE ALSO: American National Standard X3.159-1989
  14. NOMANUAL
  15. */
  16. #include "vxWorks.h"
  17. #include "string.h"
  18. /*******************************************************************************
  19. *
  20. * memmove - copy memory from one location to another (ANSI)
  21. *
  22. * This routine copies <size> characters from the memory location <source> to
  23. * the location <destination>.  It ensures that the memory is not corrupted
  24. * even if <source> and <destination> overlap.
  25. *
  26. * INCLUDE FILES: string.h
  27. *
  28. * RETURNS: A pointer to <destination>.
  29. */
  30. void * memmove
  31.     (
  32.     void *  destination, /* destination of copy */
  33.     const void * source, /* source of copy */
  34.     size_t   size /* size of memory to copy */
  35.     )
  36.     {
  37.     char * dest;
  38.     const char *src;
  39.     dest = destination;
  40.     src = source;
  41.     if ((src < dest) && (dest < (src + size)))
  42. {
  43. for (dest += size, src += size; size > 0; --size)
  44.     *--dest = *--src;
  45.         }
  46.     else 
  47. {
  48. while (size > 0)
  49.     {
  50.     size--;
  51.     *dest++ = *src++;
  52.     }
  53.         }
  54.     return (destination);
  55.     }