int HByte(char ch)
{
return (unsigned char)ch>>7;
}
/******************************************
判断两个字符串是否匹配
*******************************************/
int str_cmp(char *sVar1, char *sVar2)
{
int cmp=0; //比较结果的返回值
while(*sVar1!='\0' && *sVar1!='\0')
{
//判断高位是否是1,是1连读两个字节,否则,读一个字节
if(!HByte(*sVar1) && !HByte(*sVar2))
{
cmp=*sVar1-*sVar2;
if(cmp != 0)
{
break;
}
else
{
sVar1++;
sVar2++;
}
}
else if(HByte(*sVar1) && !HByte(*sVar2))
{
cmp=1;
break;
}
else if(!HByte(*sVar1) && HByte(*sVar2))
{
cmp=-1;
break;
}
else
{
cmp=*sVar1-*sVar2;
if(cmp != 0)
{
break;
}
else
{
sVar1++;
sVar2++;
cmp=*sVar1-*sVar2;
if(cmp != 0)
{
break;
}
else
{
sVar1++;
sVar2++;
}
}
}
}
if(*sVar1=='\0' && *sVar2!='\0')
{
cmp=-1;
}
else if(*sVar1!='\0' && *sVar2=='\0')
{
cmp=1;
}
else if(*sVar1=='\0' && *sVar2=='\0')
{
cmp=0;
}
return cmp;
}
字符串匹配
最新推荐文章于 2024-07-04 16:19:38 发布
本文介绍了一个特殊的字符串比较函数str_cmp,该函数通过检查字符的高位来决定读取一个或两个字节,以实现对不同编码方式的字符串进行高效比较。文章详细展示了函数的实现逻辑,并解释了如何处理字符串结束及不匹配的情况。
3477

被折叠的 条评论
为什么被折叠?



