Char * strncpy (char * DEST, const char * SRC, size_t count); char * strcpy (char * DEST, const char * SRC) {If (DEST = NULL) | (src = NULL) {return NULL;} Char * strdest = DEST; while (* SRC! = '\ 0') {* strdest ++ = * SRC ++;} return strdest;} void * memmove (void * DEST, const void * SRC, size_t count ); void * memcpy (void * DEST, const void * SRC, size_t count) {// assert (DEST! = NULL); // assert (SRC! = NULL); If (DEST = NULL) | (src = NULL) {return NULL;} Char * tmpdest = (char *) DEST; const char * tmpsrc = (const char *) SRC; // determine whether the memory is overlapped // assert (! (Tmpdest <tmpsrc) & (tmpdest + count)> tmpsrc); If (tmpdest <tmpsrc) & (tmpdest + count)> tmpsrc )) {return NULL;} // assert (! (Tmpsrc <tmpdest) & (tmpsrc + count)> tmpdest); If (tmpsrc <tmpdest) & (tmpsrc + count)> tmpdest) {return NULL ;} while (count --) {* tmpdest ++ = * tmpsrc ++ ;}}