home *** CD-ROM | disk | FTP | other *** search
/ Resource for Source: C/C++ / Resource for Source - C-C++.iso / codelib8 / v_10_10 / 1010014b < prev    next >
Encoding:
Text File  |  1995-11-01  |  452 b   |  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.