strcpy, strcat, strcmp, strlen,memcpy
2013-09-25 11:28
309 查看
微软的几个源码:
这几个源码里面有些没有处理异常神马的
如果面试的时候遇到这样的问题,还是问问面试官吧,说不定昨天面试官他老婆的大姨妈来了呢。。。
尤其是阿里的面试官。。。
/*** *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; }
这几个源码里面有些没有处理异常神马的
如果面试的时候遇到这样的问题,还是问问面试官吧,说不定昨天面试官他老婆的大姨妈来了呢。。。
尤其是阿里的面试官。。。
相关文章推荐
- strcpy memcpy strcat strcmp memset strlen
- atoi itoa strcpy strcmp strlen strcat memcpy memset实现
- strcpy memcpy strcat strcmp memset strlen
- 部分字符串库函数的重写(源码) toupper,memcpy,memmove,memset,memchr,strlen,strcpy,strcat,strcmp,strchr
- 模拟实现strstr,strcpy,strlen,strcat,strcmp,memcpy,memmove
- strcpy()、memcpy()、memmove()、memset() 、strcmp()、strlen()、strcat()的实现
- 部分字符串库函数的重写(源码) toupper,memcpy,memmove,memset,memchr,strlen,strcpy,strcat,strcmp,strchr,
- 模拟实现strcmp,strncmp,strstr,strcat,strncat,strcpy,strncpy,strlen ,memcpy,memmove等函数
- strcpy strlen memcpy strcat strcmp strstr strrev函数的实现代码
- 部分字符串库函数的重写(源码) toupper,memcpy,memmove,memset,memchr,strlen,strcpy,strcat,strcmp,strchr
- 自己实现memcpy/strcpy/strcmp/strcat/strlen/strstr
- 字符串处理函数的模拟实现(strlen、strstr、strcat、strcmp、strcpy、memmove、memcpy)
- 模拟实现: strstr strcpy strlen strcat strcmp memcpy memmove
- 自己实现memcpy/strcpy/strcmp/strcat/strlen/strstr
- 常用函数strcpy strcat strcmp strlen memcpy memset
- mem系列函数(memset memcpy memmove) 和str系列函数(strlen strcpy strcmp strcat strstr strtok)
- 模拟实现: strstr strcpy strlen strcat strcmp memcpy memmove
- 模拟实现字符串操作函数(strcpy,strstr,strcat,strcmp,strlen)与内存操作函数(memcpy,memmove)
- 内核源代码实现strcpy,strcmp,memcpy,memove,strcat,strlen,atoi.....
- strlen,strcpy,strcat,strcmp四个函数的原型,memcpy,memset的实现