常用CRT字符串函数源码

来源:互联网 发布:淘宝天猫返利是真的吗 编辑:程序博客网 时间:2024/04/25 21:47
////////////////////memcpy/////////////////////////void * __cdecl 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);}/////////////////////memset/////////////////void * __cdecl memset (        void *dst,        int val,        size_t count        ){        void *start = dst;        while (count--) {                *(char *)dst = (char)val;                dst = (char *)dst + 1;        }        return(start);}///////////////////////strcat//////////////////char * __cdecl strcat (        char * dst,        const char * src        ){        char * cp = dst;        while( *cp )                cp++;                   /* find end of dst */        while( *cp++ = *src++ ) ;       /* Copy src to end of dst */        return( dst );                  /* return dst */}///////////////////////strcpy//////////////////////char * __cdecl strcpy(char * dst, const char * src){        char * cp = dst;        while( *cp++ = *src++ )                ;               /* Copy src over dst */        return( dst );}/////////////////////////strchr////////////////////////////char * __cdecl strchr (        const char * string,        int ch        ){        while (*string && *string != (char)ch)                string++;        if (*string == (char)ch)                return((char *)string);        return(NULL);}///////////////////////strcmp//////////////////////////int __cdecl 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 );}///////////////////////strlen/////////////////////////size_t __cdecl strlen (        const char * str        ){        const char *eos = str;        while( *eos++ ) ;        return( (int)(eos - str - 1) );}//////////////////////strncat//////////////////////////char * __cdecl strncat (        char * front,        const char * back,        size_t count        ){        char *start = front;        while (*front++)                ;        front--;        while (count--)                if (!(*front++ = *back++))                        return(start);        *front = '\0';        return(start);}/////////////////////////strncmp//////////////////////////int __cdecl strncmp (        const char * first,        const char * last,        size_t count        ){        if (!count)                return(0);        while (--count && *first && *first == *last)        {                first++;                last++;        }        return( *(unsigned char *)first - *(unsigned char *)last );}//////////////////////////strncpy/////////////////////////////char * __cdecl strncpy (        char * dest,        const char * source,        size_t count        ){        char *start = dest;        while (count && (*dest++ = *source++))    /* copy string */                count--;        if (count)                              /* pad out with zeroes */                while (--count)                        *dest++ = '\0';        return(start);}////////////////////////////strnset//////////////////////////////char * __cdecl _strnset (        char * string,        int val,        size_t count        ){        char *start = string;        while (count-- && *string)                *string++ = (char)val;        return(start);}///////////////////////////strset//////////////////////char * __cdecl _strset (        char * string,        int val        ){        char *start = string;        while (*string)                *string++ = (char)val;        return(start);}////////////////////////strrchr///////////////////////char * __cdecl strrchr (        const char * string,        int ch        ){        char *start = (char *)string;        while (*string++)                       /* find end of string */                ;                                                /* search towards front */        while (--string != start && *string != (char)ch)                ;        if (*string == (char)ch)                /* char found ? */                return( (char *)string );        return(NULL);}//////////////////////////strrev////////////////////////char * __cdecl _strrev (        char * string        ){        char *start = string;        char *left = string;        char ch;        while (*string++)                 /* find end of string */                ;        string -= 2;        while (left < string)        {                ch = *left;                *left++ = *string;                *string-- = ch;        }        return(start);}////////////////////////////strstr////////////////////////////char * __cdecl 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);}

原创粉丝点击