home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / listings / v_10_10 / 1010014b < prev    next >
Text File  |  1992-08-12  |  452b  |  21 lines

  1.  
  2. Listing 3 -- the file memmove.c
  3.  
  4. /* memmove function */
  5. #include <string.h>
  6.  
  7. void *(memmove)(void *s1, const void *s2, size_t n)
  8.     {    /* copy char s2[n] to s1[n] safely */
  9.     char *sc1 = (char *)s1;
  10.     const char *sc2 = (const char *)s2;
  11.  
  12.     if (sc2 < sc1 && sc1 < sc2 + n)
  13.         for (sc1 += n, sc2 += n; 0 < n; --n)
  14.             *--sc1 = *--sc2;    /*copy backwards */
  15.     else
  16.         for (; 0 < n; --n)
  17.             *sc1++ = *sc2++;    /* copy forwards */
  18.     return (s1);
  19.     }
  20.  
  21.