#include<iostream>
using namespace std;
/***************************************************************************/
/* 字符串比較函數(shù)strcmp
原型:int strcmp(const char *string1,const char *string2);
比較規(guī)則:對(duì)兩個(gè)字符串從左到右逐個(gè)字符相比較(ASCII值比較),直到出現(xiàn)不同的字
符或遇到'\0'為止;如全部字符相同,則認(rèn)為相等;若出現(xiàn)不相同的字符,則以第一個(gè)
不相同的字符的比較結(jié)果為準(zhǔn) */
源碼:
int strcmp(const char * cs,const char * ct)
{
register signed char __res;
while (1) {
if ((__res = *cs - *ct++) != 0 || !*cs++)
break;
}
return __res;
}
/****************************************************************************/
int StrCmp(const char *string1,const char *string2)
{
int result;
while(*string1!='\0'&&*string2!='\0')
{
if(*string1==*string2)
{
string1++;
string2++;
}
else break;
}
result=string1-string2;
if(result>0)
return 1;
else if(result<0)
return -1;
else return 0;
}
/************************************************************************/
/* 字符串比較函數(shù)strncmp;
原型:int strncmp(const char *string1,const char *string2,size_t count);
比較兩字符串前count個(gè)字符*/
源碼:
int strncmp(const char * cs,const char * ct,size_t count)
{
register signed char __res = 0;
while (count) {
if ((__res = *cs - *ct++) != 0 || !*cs++)
break;
count--;
}
return __res;
}
/************************************************************************/
int StrnCmp(const char *string1,const char *string2,size_t count)
{
int result,k=1;
while(*string1!='\0'&&*string2!='\0'&&k<=count)
{
if(*string1==*string2)
{
string1++;
string2++;
k++;
}
else break;
}
result=*string1-*string2;
return result;
}
int main()
{
char *str1="computer";
char *str2="comparer";
cout<<"使用StrCmp函數(shù):"<<endl;
cout<<StrCmp(str1,str2)<<endl;
cout<<strcmp(str1,str2)<<endl;
cout<<StrnCmp(str2,str1,2)<<endl;
cout<<strncmp(str2,str1,2)<<endl;
}
聯(lián)系客服