浏览 7001 次
锁定老帖子 主题:strcmp函数的两种实现
精华帖 (0) :: 良好帖 (1) :: 新手帖 (4) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-10-21
最后修改:2010-11-08
strcmp函数的两种实现,gcc测试通过。
一种实现: #include<stdio.h> int strcmp(const char *str1,const char *str2) { /* 注释以下的五行(while循环)可以简写为: * for(;(*str1==*str2)&&*str1!='\0';str1++,str2++); * */ while((*str1==*str2)&&*str1!='\0') { str1++; str2++; } if(*str1=='\0'&&*str2=='\0') return 1; else return -1; } int main() { char *st1="abdefg"; char *st2="abcdefg"; printf("%d\n",strcmp(st1,st2)); char *st3="12345"; char *st4="12345"; printf("%d\n",strcmp(st3,st4)); return 0; } 另一种实现: #include<stdio.h> int strcmp(const char *str1,const char *str2) { while(str1!=NULL&&str2!=NULL) { while(*str1++==*str2++) { if(*str1=='\0'&&*str2=='\0') return 1; } return -1; //不等的情况 } return -2; //有指针为空的情况 } int main() { char *st1="abdefg"; char *st2="abcdefg"; printf("%d\n",strcmp(st1,st2)); char *st3="12345"; char *st4="12345"; printf("%d\n",strcmp(st3,st4)); char *st5="xyz",*st6=NULL; printf("%d\n",strcmp(st5,st6)); return 0; }
May contact with me by e-mail: AllenNewOK@126.com 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |