摘抄些微软实现的源码

来源:互联网 发布:用友软件t3普及版 编辑:程序博客网 时间:2024/06/06 13:19

自己实现的感觉不怎么好,就在vc的安装文件中找到了这些微软的源码。

从细节上就能感受到大神的魅力。

int strcmp (const char * src,const char * dst)

{
        int ret = 0 ;
        while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
                ++src, ++dst;
        if ( ret < 0 )
                ret = -1 ;
        else if ( ret > 0 )
                ret = 1 ;
        return( ret );
}
 
char *strcat (char * dst,const char * src)
{
        char * cp = dst;
        while( *cp )
                cp++;                   
        while( *cp++ = *src++ ) ;      
        return( dst );                  
}
 
char *strcpy(char * dst, const char * src)
{
        char * cp = dst;
        while( *cp++ = *src++ );
        return( dst );
}
 
int strlen (const char * str)
{
        const char *eos = str;
        while( *eos++ ) ;
        return( (int)(eos - str - 1) );
}
 
char *_strset (char * string,int val)
{
        char *start = string;
        while (*string)
                *string++ = (char)val;
        return(start);
}
 
char *strstr (const char * str1,const char * str2)
{
        char *cp = (char *) str1;
        char *s1, *s2;
        if ( !*str2 )
            return((char *)str1);
 
        while (*cp)
        {
                s1 = cp;
                s2 = (char *) str2;
                while ( *s1 && *s2 && !(*s1-*s2) )
                        s1++, s2++;
                if (!*s2)
                        return(cp);
                cp++;
        }
        return(NULL);
 
}
 
int abs (int number)
{
        return( number>=0 ? number : -number );
}
 
int memcmp (const void * buf1,const void * buf2,size_t count)
{
        if (!count)
                return(0);
        while ( --count && *(char *)buf1 == *(char *)buf2 ) {
                buf1 = (char *)buf1 + 1;
                buf2 = (char *)buf2 + 1;
        }
        return( *((unsigned char *)buf1) - *((unsigned char *)buf2) );
}
 
void *memcpy (void * dst,const void * src,size_t count)
{
        void * ret = dst;
        while (count--) {
                *(char *)dst = *(char *)src;
                dst = (char *)dst + 1;
                src = (char *)src + 1;
        }
        return(ret);
}
 
void *memset (void *dst,int val,size_t count)
{
        void *start = dst;
        while (count--) {
                *(char *)dst = (char)val;
                dst = (char *)dst + 1;
        }
        return(start);
}
 
0 0
原创粉丝点击