void   *  my_memccpy( void   * dest, const   void   * src, int  c, int  count)
{
    
while ( count && (*((char *)(dest = (char *)dest + 1- 1=
        
*((char *)(src = (char *)src + 1- 1)) != (char)c )
        count
--;
    
return(count ? dest : NULL);

}


// memset
void   * my_memset( void   * buffer,  int  c,  int  count)
{
    
char* p = (char*)buffer;
    
while(count--
        
*p++ = (char)c;
    
return buffer;
}

// memcpy
void   *  my_memcpy( void   * dst, const   void   * src, int  count)
{
    
void * ret = dst;
    
while (count--
    
{
        
*(char *)dst = *(char *)src;
        dst 
= (char *)dst + 1;
        src 
= (char *)src + 1;
    }

    
return(ret);
}



// memmove
/**/ /*
memmove()由src所指定的内存区域赋值count个字符到dst所指定的内存区域。
src和dst所指内存区域可以重叠,但复制后src的内容会被更改。函数返回指向dst的指针。
*/


void   *  my_memmove( void   *  dst, const   void   *  src, int  count)
{
    
void * ret = dst;
    
if (dst <= src || (char *)dst >= ((char *)src + count)) 
    
{
        
while (count--
        
{
            
*(char *)dst = *(char *)src;
            dst 
= (char *)dst + 1;
            src 
= (char *)src + 1;
        }

    }

    
else 
    
{
        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);
}



char   *  __cdecl strcpy( char   *  dst,  const   char   *  src)
{
    
char * cp = dst;
    
while*cp++ = *src++ )    ;         
    
return( dst );
}


char   *  strcat ( char   *  dst,  char   *  src)
{
    
char * cp = dst;
    
while*cp )
      
++cp;   /**//* Find end of dst */
    
while*cp++ = *src++ )
             
/**//* Copy src to end of dst */
    
return( dst );
}


int  my_strlen( const   char   *  str )
{
    
const char *= str;
    
while*p++ ) ;
    
return( (int)(p - str - 1) );

}

// strcmp
int  my_strcmp( const   char   * string1,  const   char   * string2 )
{
    
int ret;
    
while(    ( ret=*(unsigned char *)string1++ -*(unsigned char *)string2++)==0 &&   string1  );
    
return ret;
}

借鉴: http://www.cublog.cn/u2/64540/article_87467.html