Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1374464
  • 博文数量: 704
  • 博客积分: 10140
  • 博客等级: 上将
  • 技术积分: 6230
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-15 20:41
文章分类

全部博文(704)

文章存档

2013年(1)

2012年(16)

2011年(536)

2010年(151)

分类: C/C++

2010-07-30 15:30:40

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!
阅读(2255) | 评论(0) | 转发(0) |
0

上一篇:自己写c strcmp函数

下一篇:c strcpy

给主人留下些什么吧!~~