【C語言庫函數原始碼】
【本程式在Dev C++ 4.9.9.2 下編譯通過】
/*
STRCMP compares two strings and returns an integer
to indicate whether the first is less than the second,
the two are equal, or whether the first is greater than the second.
Comparison is done byte by byte on an UNSIGNED basis,
which is to say that Null (0) is less than any other character (1-255).
字串比較函數,比較字串source和dest。當源字串大於目標字串的時候,返回1;
當源字串等於目標字串的時候,返回0。當源字串小於目標字串的時候,返回-1;
*/
int my_strcmp(const char *source,const char *dest)
{
int ret = 0 ;
while( ! (ret = *( unsigned char *)source - *(unsigned char *)dest) && *dest)
source++, dest++;
if ( ret < 0 )
ret = -1 ;
else if ( ret > 0 )
ret = 1 ;
return(ret);
}
void Print(char * str1,char *str2,int t)
{
if(t == 0)
printf("/n%s Equal %s/n",str1,str2);
else if(t == 1)
printf("/n%s Upper Than %s/n",str1,str2);
else if(t == -1)
printf("/n%s Lower Than %s/n",str1,str2);
}
int main()
{
char *str1= "ammana";
char *str2 = "babi";
Print(str1,str2,my_strcmp(str1,str2));
Print(str2,str1,my_strcmp(str2,str1));
Print(str2,str2,my_strcmp(str2,str2));
system("pause");
return 0;
}