strcpy deal with overlapping

来源:互联网 发布:中日军力对比2017知乎 编辑:程序博客网 时间:2024/06/06 09:58

 

char *strcpy(char *to, char *from)

{

    memmove(to, from, 1+strlen(from));

    return to;

}

 

 

 

void *

memmove (dest, source, length)     char *dest;     const char *source;     unsigned length;{  char *d0 = dest;  if (source < dest)    /* Moving from low mem to hi mem; start at end.  */    for (source += length, dest += length; length; --length)      *--dest = *--source;  else if (source != dest)    {      /* Moving from hi mem to low mem; start at beginning.  */      for (; length; --length)        *dest++ = *source++;    }  return (void *) d0;}

 

 

 

参照:

http://www.google.com/codesearch/p?hl=en#_r2wmqH9ICs/stable/namazu-2.0.16.tar.gz%7C3QP2I8wZP1c/namazu-2.0.16/nmz/memmove.c&q=memmove