char *strcpy( char *strDestination, const char *strSource ) { char *strTemp = strDestination; while(*strTemp ++ = *strSource++); return strDestination; } void *memcpy( void *dest, const void *src, size_t count ) { ASSERT((dest != NULL)&&(src != NULL)); char *temp_dest = (char *)dest; char *temp_src = (char *)src; while(count--) // 不对是否存在重叠区域进行判断 { *temp_dest++ = *temp_src++; } return dest; } void *memmove( void *dest, const void *src, size_t count ) { ASSERT((dest != NULL)&&(src != NULL)); char *temp_dest = (char *)dest; char *temp_src = (char *)src; if ((temp_dest - temp_src) > count || (temp_src - temp_dest) > count) // 不存在重叠的内存区域 { while(count--) { *temp_dest++ = *temp_src++; } } else // 存在重叠的内存区域 { temp_dest += count - 1; // 指针移到末尾 temp_src += count -1; // 指针移到末尾 while(count--) // 从末尾开始拷贝 { *temp_dest-- = *temp_src--; } } return dest; }