Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4742999
  • 博文数量: 930
  • 博客积分: 12070
  • 博客等级: 上将
  • 技术积分: 11448
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-15 16:57
文章分类

全部博文(930)

文章存档

2011年(60)

2010年(220)

2009年(371)

2008年(279)

分类: C/C++

2008-11-17 21:23:14



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!

阅读(3264) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~