自己写strcmp( )函数
来源:互联网 发布:ni80发热丝数据 编辑:程序博客网 时间:2024/06/05 22:59
网上搜到了一个库函数strcmp( )源代码:
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 );}
我初步自己写的是:
int strcmp(char const *s1, char const *s2){int i = 0;while(1) {if(s1[i] == '\0' && s2[i] == '\0')return 0;else if(s1[i] > s2[i])return 1;else if(s1[i] < s2[i])return -1;i++;}}
然后再精简一下是:
int strcmp(char const *s1, char const *s2){int ret, i = 0;while(1) {ret = s1[i] - s2[i];if(ret || !s1[i] || !s2[i])return ret;i++;}}
继续精简:
int strcmp(char const *s1, char const *s2){int ret, i = 0;while(1) {ret = s1[i] - s2[i];if(ret || !s1[i])//只要字符串中有一个遇到\0,ret就不为零了 return ret;i++;}}
但如果传入指针为NULL,则会崩溃,改进如下:
int strcmp(char const *s1, char const *s2){int ret, i = 0;if( !s1 || !s2)return s1 - s2;while(1) {ret = s1[i] - s2[i];if(ret || !s1[i])//只要字符串中有一个遇到\0,ret就不为零了 return ret;i++;}}
欢迎大家评头论足
- 自己写strcmp( )函数
- 自己写一个strcmp函数(C++)
- 自己写的strcmp
- 自己模拟strcmp库函数写的功能函数my_strcmp实现strcmp的功能,完整代码
- 仿写strcmp函数
- 写一函数,实现两个字符串的比较,即自己写一个strcmp函数
- P279_1017 写一函数,实现两个字符串的比较,即自己写一个strcmp函数
- 自己实现的strcmp函数
- 通讯录(自己写strcpy,strcmp)
- 自己编写实现strcat()和strcmp()函数
- 自己动手写字符串比较函数strcmp()
- C语言面试题,自己写库函数(memcpy、strcpy、strcmp....)
- (C语言)自己写字符串操作函数(一)——strlen/strcpy/strcat/strcmp/strchr/strpbrk/strstr等相关函数
- strcmp函数
- strcmp() 函数
- strcmp() 函数
- strcmp函数
- strcmp函数
- layoutInflate 解析
- JAVA发送HTTP请求,并接受返回内容
- Devexpress 报表 自定义纸张大小
- SCI收录的IEEE期刊
- java web中的监听器
- 自己写strcmp( )函数
- Windows 临界区,内核事件,互斥量,信号量。
- 数据结构和算法方面的书籍
- oracle 常用语句
- VC windows api 多线程---临界区
- dataguard手动switchover切换步骤及注意的问题
- 多线程临界区(windows)/互斥(linux)
- 搜索引擎如何变别网页是否有改动
- Devexpress 报表 显示