memmove
貼個VC下的源碼看看:void * __cdecl memmove ( void * dst, const void * src, size_t count? )
{
??????? void * ret = dst;
??????? if (dst <= src || (char *)dst >= ((char *)src + count)) {
??????????????? /*
???????????????? * Non-Overlapping Buffers
???????????????? * copy from lower addresses to higher addresses
???????????????? */
??????????????? while (count--) {
??????????????????????? *(char *)dst = *(char *)src;
??????????????????????? dst = (char *)dst + 1;
??????????????????????? src = (char *)src + 1;
??????????????? }
??????? }
??????? else {
??????????????? /*
???????????????? * Overlapping Buffers
???????????????? * copy from higher addresses to lower addresses
???????????????? */
??????????????? dst = (char *)dst + count - 1;
??????????????? src = (char *)src + count - 1;
??????????????? while (count--) {
??????????????????????? *(char *)dst = *(char *)src;
??????????????????????? dst = (char *)dst - 1;
??????????????????????? src = (char *)src - 1;
??????????????? }
??????? }
??????? return(ret);
}
void * memmove(void * dest,const void *src,size_t count)
{
?????? char *tmp, *s;
??????? if (dest <= src) {
??????????????? tmp = (char *) dest;
?????????????? s = (char *) src;
??????????????? while (count--)
??????????????????????? *tmp++ = *s++;
??????????????? }
???????? else {
???????????????? tmp = (char *) dest + count;
??????????????? s = (char *) src + count;
???????????????? while (count--)
???????????????????????? *--tmp = *--s;
??????????????? }
??????? return dest;
?}
posted on 2007-10-22 00:37 旅途 閱讀(259) 評論(0) 編輯 收藏 引用 所屬分類: C/C++