尝试两种方式实现 strcmp()函数 (string compare)

关于strcmp() 函数

strcmp()是我们平时非常常见的一个string类中的库函数,用于比较两个字符串并根据比较结果返回整数。通常情况下,基本形式为strcmp(str1,str2),若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。

比较规则

两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇’\0’为止。

#今天我将尝试使用两种方式来实现这个函数#

注意传入的字符串均为const,我们不改变字符串只是作比较

方式一:数组

int strcmp(const char* s1,const char* s2)
{
	int index=0;
	
	while(s1[index]==s2[index])
	{
		if (s1[index]=='\0')
		{
			return 0;
			break;
		}
		index++;
	
	}
	/*
		出现不匹配项
	*/
	int result= s1[index]-s2[index];
	/*if(result>0)           //根据需求 调节返回值
	{
		return 1;
	}
	else
		return-1;*/
	return result;
}

方式二:指针

我们都知道所有的数组都是指针,只不过这个指针指的是数组第一个元素所在的地址。那么我们在遍历数组唯一需要做的就是让这个指针指向下一个元素就OK。
但是我们如何让他指向下一个元素呐?
我们会去使用让地址先自增,再去指向新的地址所储存的元素。

*p++来了

就p而言,我们可以知道他们的优先级相同,并且++和 * 都是自右向左结合的,那么在这个* p++中,便会先会对地址操作,然后再指向新的地址,所以说* p++等同于 * (p++)。

int mycmp(const char* s1,const char* s2)
{
	while(*s1==*s2)
	{
		if(!*s1)
		{
			return 0;
		}
		*s1++;
		*s2++;
	}
	return *s1-*s2;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值