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

全部博文(930)

文章存档

2011年(60)

2010年(220)

2009年(371)

2008年(279)

分类: C/C++

2008-11-17 21:24:24

zj@zj:~/C_parm/string/own_str/strncmp$ cat strncmp.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;
 *The strncmp() function is similar, except it only compares the first
       (at most) n characters of s1 and s2.
*/

#include<stdio.h>
#include<stdlib.h>

int my_strncmp(const char *source,const char *dest,int n);

int main()
{
   char *str1= "hello,zj!";
   char *str2 = "hello,ubuntuer!";
   my_strncmp(str1,str2,6);
   my_strncmp(str1,str2,8);
   my_strncmp(str2,str1,6);
   my_strncmp(str2,str1,8);
   my_strncmp(str2,str2,10);

   exit (EXIT_SUCCESS);
}

int my_strncmp(const char *source,const char *dest,int n)
{
  int ret = 0 ;
  int i = 0;
 while((i<n)&&(!(ret=*(unsigned char *)(source+i)-*(unsigned char *)(dest+i)))&&*(dest+i)&&*(source+i))
    i++;
     if (ret < 0)
         printf("%s first %d chars lower than %s\n",source,n,dest);
     else if (ret > 0 )
         printf("%s first %d chars larger than %s\n",source,n,dest);
     else
    printf("%s first %d chars equal to %s\n",source,n,dest);
}

zj@zj:~/C_parm/string/own_str/strncmp$ ./strncmp
hello,zj! first 6 chars equal to hello,ubuntuer!
hello,zj! first 8 chars larger than hello,ubuntuer!
hello,ubuntuer! first 6 chars equal to hello,zj!
hello,ubuntuer! first 8 chars lower than hello,zj!
hello,ubuntuer! first 10 chars equal to hello,ubuntuer!

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