源码:微软strcpy,strcat和strcmp的实现源代码

/***

*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* strcpy(char * dst, const char * src)

{

char * cp = dst;

while( *cp++ = *src++ )

; /* Copy src over dst */

return( dst );

}

/***

*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* 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 */

}

/***

*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 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 );

}

点赞