strcpy, strcat, strcmp, strlen,memcpy

来源:互联网 发布:了解马克思 知乎 编辑:程序博客网 时间:2024/05/20 19:47

微软的几个源码:

/****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){assert((dst != NULL) && (src != NULL));    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;}size_t strlen(const char * str){ const char *cp =  str;while  (*cp++ );return (cp - str - 1 ); }

void* memcpy(void* sdt, const void* src, unsigned int len){    register char * d;    register char * s;    if (0 == len)    {        return dst;    }    if (dst > src)    {        d = (char *)dst + len - 1;        s = (char *)src + len - 1;        while (len >= 4)        {            *d-- = *s--;            *d-- = *s--;            *d-- = *s--;            *d-- = *s--;            len -= 4;        }        while (len--)        {            *d-- = *s--;        }    }    else if (dst < src)    {        d = (char *)dst;        s = (char *)src;        while (len >= 4)        {            *d++ = *s++;            *d++ = *s++;            *d++ = *s++;            *d++ = *s++;            len -= 4;        }        while (len--)        {            *d++ = *s++;        }    }    return dst;}




这几个源码里面有些没有处理异常神马的

如果面试的时候遇到这样的问题,还是问问面试官吧,说不定昨天面试官他老婆的大姨妈来了呢。。。

尤其是阿里的面试官。。。



原创粉丝点击