strncmp的特殊实现

题目大体要求字母不区分大小写,数字与字母不进行比较,输入只可能是字母和数字组成的串,比较指定长度以内的字符

//字母不区分大小写,字母与数字不比较

strncmp(const *char s1, const char* s2, int n)
{
int len=0;
while(len<n)
{
if(*s1=='\0')
{
if(*s2!='\0')
return -1;
else return 0;
}
if(*s2=='\0')
{
if(*s1!='\0')
return 1;
else return 0;
}
if(('a'<=*s1<='z'||'A'<=*s1<='Z')&&('a'<=*s2<='z'||'A'<=*s2<='Z'))
{
if(*s1==*s2)
{
s1++;
s2++;
len++;
}else
if(*s1<*s2)
{
if(*s1+26==*s2)
{
s1++;
s2++;
}
else
return -1;
}else
{
if(*s1==*s2+26)
{
s1++;
s2++;
}
else
return 1;
}
}else
if(!('a'<=*s1<='z'||'A'<=*s1<='Z')&&!('a'<=*s2<='z'||'A'<=*s2<='Z'))
{
if(*s1>*s2)
return 1;
else if(*s1<*s2)
return -1;
else
{
s1++;
s2++;
len++;
}
}
else
{
s1++;
s2++;
len++;
}

}
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值