#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;
}
|