分类: C/C++
2010-07-30 15:29:54
zj@zj:~/C_parm/string/own_str/strcmp$ cat strcmp.c
/*
* 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;
*/
#include<stdio.h>
#include<stdlib.h>
int my_strcmp(const char *source,const char *dest);
void print(char * str1,char *str2,int t);
int main()
{
char *str1= "hello,zj!";
char *str2 = "hello,ubuntuer!";
print(str1,str2,my_strcmp(str1,str2));
print(str2,str1,my_strcmp(str2,str1));
print(str2,str2,my_strcmp(str2,str2));
exit (EXIT_SUCCESS);
}
int my_strcmp(const char *source,const char *dest)
{
int ret = 0 ;
int i = 0;
while(!(ret=*(unsigned char *)(source+i)-*(unsigned char *)(dest+i))&&(*(dest+i))&&*(source+i))
i++;
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("%s Equal %s\n",str1,str2);
else if(t == 1)
printf("%s Upper Than %s\n",str1,str2);
else if(t == -1)
printf("%s Lower Than %s\n",str1,str2);
}
zj@zj:~/C_parm/string/own_str/strcmp$ ./strcmp
hello,zj! Upper Than hello,ubuntuer!
hello,ubuntuer! Lower Than hello,zj!
hello,ubuntuer! Equal hello,ubuntuer!