char* strcpy_safe(char* dst,const char* src) { size_t len = strlen(src); char* cp = dst; if(dst == NULL) { return NULL; } if(dst<=src || (char*)dst >= ((char*)src + len)) { while(*src) { *dst++ = *src++; } *dst = '/0'; return cp; } else { dst = (char*)dst + len; *dst-- = '/0'; src = (char*)src + len - 1; while(len--) { *dst-- = *src--; } return cp; } }