标签: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语言