strcpy和memcpy的标准实现

//============================================================================
// Name        : HelloWorld.cpp
// Author      : chio <chio.yang@gmail.com>
// Version     : ver.1.0.0
// Copyright   : Suprasoft Inc,.
// Description : TODO
//============================================================================

#include <iostream>
#include <string.h>
#include <cassert>
using namespace std;

char * strcpy(char *dst, const char *src) {
    assert(src != NULL && dst != NULL);
    
char *ret = dst;
    
while((*dst++ = *src++!= '\0') ;
    
return ret;
}

void * memcpy(void *dst, const void *src, size_t len) {
    assert(src != NULL && dst != NULL);
    
void *ret = dst;
    
int i = len;
    
//防重叠
    if(src < dst) {
        
char *csrc = (char *)src;
        
char *cdst = (char *)dst;
        
while(i--) {
            
*cdst++ = *csrc++;
        }
    } else {
        
char *csrc = (char *)src + len - 1;
        
char *cdst = (char *)dst + len - 1;
        
while(i--) {
            
*cdst-- = *csrc--;
        }
    }

    
return ret;
}

int main() {
    
char *src = "hello world";
       
char *dst = new char[0];
    cout << strcpy(dst, src) << endl;
    
void *memsrc = (void *)"hello";
    
char memdst[6];
    memdst[5= '\0';
    cout << (char *)memcpy(memdst, memsrc, 5<< endl;

    
return 0;
}
posted @ 2009-08-01 18:19 中土 阅读(...) 评论(...) 编辑 收藏
©2005-2008 Suprasoft Inc., All right reserved.