标签:strcmp strcmp函数 strcmp函数实现 strcmp函数功能 strcmp函数参数 strcmp函数返回值 strcmp函数原型 strcmp函数用法 strcmp函数实例 模拟实现strcmp函数 C语言
(我们依然先模拟实现strcmp函数,然后再对照string.h库中strcmp函数的实现,对比与大师之间的差距.)
通过上一篇文章:C语言::strcmp函数功能、原型、用法及实例我们获得了strcmp函数的如下信息:
strcmp原型:int strcmp( const char *s1, const char *s2 );
strcmp功能:将两个字符串自左向右逐个字符进行相比(根据ASCII值大小),直到出现不同的字符或遇’\0’为止.
strcmp返回值:s1>s2 返回值>0、s1<s2 返回值<0、s1=s2 返回值=0
我们了解strcmp函数大体信息之后,不难分析出模拟实现strcmp函数的算法.
循环遍历s2,与s1进行比较.若相等,继续进行下一个字符的比较;否则,返回s1所指向内容-s2所指向内容
//模拟实现strcmp函数
int my_strcmp(const char *s1, const char *s2){
//对s1进行断言
assert(s1);
//对s2进行断言
assert(s2);
//当s1所指向的值与s2所指向值相等
//且s2所指向的值并不是\0时进入循环
while(!(*s1-*s2)&&*s2){
s1++;
s2++;
}
return *s1-*s2;
}
//string.h库中strcmp函数核心代码
int __cdecl strcmp(const char *s1,const char *s2){
int ret = 0;
while(!(ret = (*(unsigned char*)s1 - *(unsigned char*)s2)) && *s1){
++s1,++s2;
}
if(ret<0){
ret = -1;
}
if(ret>0){
ret = 1;
}
return (ret);
}
/*
*本代码由高小调原创,版权归高小调博客所有
*作者:高小调
*日期:2016-8-9
*代码功能:模拟实现strcmp函数
*集成开发环境:Microsoft Visual Studio 2010
*/
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
//模拟实现strcmp函数
int my_strcmp(const char *s1, const char *s2){
//对s1进行断言
assert(s1);
//对s2进行断言
assert(s2);
//当s1所指向的值与s2所指向值相等
//且s2所指向的值并不是\0时进入循环
while(!(*s1-*s2)&&*s2){
s1++;
s2++;
}
return *s1-*s2;
}
//string.h库中strcmp函数核心代码
int __cdecl strcmp(const char *s1,const char *s2){
int ret = 0;
while(!(ret = (*(unsigned char*)s1 - *(unsigned char*)s2)) && *s1){
++s1,++s2;
}
if(ret<0){
ret = -1;
}
if(ret>0){
ret = 1;
}
return (ret);
}
int main(){
//某日,中国人、美国人、印度人、日本人一起旅游
//不小心走到一片荒芜之地,遇到了食人族酋长
//酋长说比中国人...短的人留下当作我的晚餐!
char Chinese[]="我18cm";
char American[]="我19cm";
char Indian[]="我18cm";
char Japanese[]="我15cm";
//你猜是谁?
printf("裁决之镰:最终输出小于0的人将会被食人族吃掉!\n");
printf("American:%d\n",my_strcmp(American,Chinese));
printf("Indian:%d\n",my_strcmp(Indian,Chinese));
printf("Japanese:%d\n",my_strcmp(Japanese,Chinese));
system("pause");
return 0;
}

小调祝你一切安好.
本文由高小调博客原创!
原文地址:http://gaoxiaodiao.com/p/23.html
如欲转载,请注明出处!
标签:strcmp strcmp函数 strcmp函数实现 strcmp函数功能 strcmp函数参数 strcmp函数返回值 strcmp函数原型 strcmp函数用法 strcmp函数实例 模拟实现strcmp函数 C语言