微软提供的vc++2008 标准库源代码 共享给大家
https://down.bccn.net/3671.html
/*** *strlen.c - contains strlen() routine * * Copyright (c) Microsoft Corporation. All rights reserved. * *Purpose: * strlen returns the length of a null-terminated string, * not including the null byte itself. * *******************************************************************************/ #include <cruntime.h> #include <string.h> #pragma function(strlen) /*** *strlen - return the length of a null-terminated string * *Purpose: * Finds the length in bytes of the given string, not including * the final null character. * *Entry: * const char * str - string whose length is to be computed * *Exit: * length of the string "str", exclusive of the final null byte * *Exceptions: * *******************************************************************************/ size_t __cdecl strlen ( const char * str ) { const char *eos = str; while( *eos++ ) ; return( eos - str - 1 ); }
/*** *strcat.c - contains strcat() and strcpy() * * Copyright (c) Microsoft Corporation. All rights reserved. * *Purpose: * Strcpy() copies one string onto another. * * Strcat() concatenates (appends) a copy of the source string to the * end of the destination string, returning the destination string. * *******************************************************************************/ #include <cruntime.h> #include <string.h> #ifndef _MBSCAT #pragma function(strcat,strcpy) #endif /* _MBSCAT */ /*** *char *strcat(dst, src) - concatenate (append) one string to another * *Purpose: * Concatenates src onto the end of dest. Assumes enough * space in dest. * *Entry: * char *dst - string to which "src" is to be appended * const char *src - string to be appended to the end of "dst" * *Exit: * The address of "dst" * *Exceptions: * *******************************************************************************/ 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 */ } /*** *char *strcpy(dst, src) - copy one string over another * *Purpose: * Copies the string src into the spot specified by * dest; assumes enough room. * *Entry: * char * dst - string over which "src" is to be copied * const char * src - string to be copied over "dst" * *Exit: * The address of "dst" * *Exceptions: *******************************************************************************/ char * __cdecl strcpy(char * dst, const char * src) { char * cp = dst; while( *cp++ = *src++ ) ; /* Copy src over dst */ return( dst ); }
/*** *strcmp.c - routine to compare two strings (for equal, less, or greater) * * Copyright (c) Microsoft Corporation. All rights reserved. * *Purpose: * Compares two string, determining their lexical order. * *******************************************************************************/ #include <cruntime.h> #include <string.h> #pragma function(strcmp) /*** *strcmp - compare two strings, returning less than, equal to, or greater than * *Purpose: * STRCMP compares two strings and returns an integer * to indicate whether the first is less than the second, the two are * equal, or whether the first is greater than the second. * * Comparison is done byte by byte on an UNSIGNED basis, which is to * say that Null (0) is less than any other character (1-255). * *Entry: * const char * src - string for left-hand side of comparison * const char * dst - string for right-hand side of comparison * *Exit: * returns -1 if src < dst * returns 0 if src == dst * returns +1 if src > dst * *Exceptions: * *******************************************************************************/ 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 ); }