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;}
这几个源码里面有些没有处理异常神马的
如果面试的时候遇到这样的问题,还是问问面试官吧,说不定昨天面试官他老婆的大姨妈来了呢。。。
尤其是阿里的面试官。。。
- strcpy, strcat, strcmp, strlen,memcpy
- strcat,strcpy,strcmp,strlen,memcpy函数原型
- strcpy memcpy strcat strcmp memset strlen
- strcpy、strncpy与memcpy strlen strcat strcmp
- strcpy memcpy strcmp strcat strlen实现源码
- strcat strcpy strcmp strlen
- 自己实现memcpy/strcpy/strcmp/strcat/strlen/strstr
- atoi itoa strcpy strcmp strlen strcat memcpy memset实现
- 模拟实现strstr,strcpy,strlen,strcat,strcmp,memcpy,memmove
- 0061 strcpy strcmp strcat strlen memcpy函数再写
- 模拟实现: strstr strcpy strlen strcat strcmp memcpy memmove
- strlen,strcpy,strcat,strcmp,strstr,memcpy,的模拟实现方式
- 模拟实现strlen,strcpy,strcat,strcmp,strstr,memcpy,memmove
- strlen,strcpy,strcat,strcmp,strstr
- strcpy,strcmp,strlen,strcat总结
- strcmp && strcpy && strlen && strcat 源码
- strcpy/strcmp/strlen/strcat/strstr
- strcmp && strcpy && strlen && strcat 源码
- POJ 1090 生日蛋糕
- 浏览器的兼容性问题
- 网站服务器连接两天出现同样问题站点访问不了
- Servlet中会话管理
- IT战略规划与企业架构
- strcpy, strcat, strcmp, strlen,memcpy
- rabbitMQ入门
- Anotation转载的详细教程
- Python使用总结
- java 中对于接口的理解和我对java 的一些理解
- java.io.FileNotFoundException: /sdcard/fav.txt (Permission denied)
- 转: 求一维数组中元素的最大值和最小值和位置方法二
- web App 中meta 属性的描述
- Linux利器 strace