给出一个函数,原型为 int strnicmp(char* const s1,char* const s2,int n)
要求比较两个字符串(由s1与s2字符指针标识)
如果字符串的长度超过n,字符串长度为n;
1、如果两字符串所含字母完全相同,则返回0;
2、如果两字符串所含字母相同(不区分大小写;A与a也算字母相同) ,则返回1
3、否则返回-1
#include <iostream>
#include <stdlib.h>
#include<stdio.h>
#include<math.h>
using namespace std;
int strnicmp(char* const s1,char* const s2,int n)
{
char *ps1=s1,*ps2=s2;
int i=0,a=strlen(s1)-1,b=strlen(s2)-1;
if(a>n) *(ps1+n)='\0';
if(b>n) *(ps2+n)='\0';
puts(ps1);puts(ps2);
while((*ps1!='\0')||(*ps2!='\0'))
{
if((*ps1==*ps2||fabs(*ps1-*ps2)==32))
{ps1++;ps2++;}
else
if(*ps1>*ps2||*ps1-32>*ps2||*ps1+32>*ps2) return 1;
else return -1;
}
if((*ps1=='\0')&&(*ps2=='\0')) {return 0;}
}
int main(int argc, char *argv[])
{
char s1[10],s2[10];
cout<<"please input string s1&s2:\n"<<endl;
cin>>s1>>s2;
switch(strnicmp(s1,s2,4))
{
case 0: cout<<"s1 is equal s2!"<<endl; break;
case 1: cout<<"s1 is bigger than s2!"<<endl; break;
case -1: cout<<"s1 is smaller than s2!"<<endl;break;
}
system("PAUSE");
return 0;
}