Chinaunix首页 | 论坛 | 博客
  • 博客访问: 640813
  • 博文数量: 99
  • 博客积分: 4335
  • 博客等级: 中校
  • 技术积分: 931
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-26 14:11
文章分类

全部博文(99)

文章存档

2012年(14)

2011年(17)

2010年(14)

2009年(54)

分类: C/C++

2009-07-30 13:18:40

strncmp 函数的分析 

1 函数原型
  extern int strncmp(char *s1, char * s2, int n);  
2 函数用法
  #include  
3 函数功能
  比较字符串s1和s2的前n个字符。  
4 函数说明:
  当s1  当s1=s2时,返回值=0
  当s1>s2时,返回值>0
5 函数源码


int strncmp ( char * s1, char * s2, size_t n)
{
  if ( !n )//n为无符号整形变量;如果n为0,则返回0

  return(0);

  //在接下来的while函数中

  //第一个循环条件:--n,如果比较到前n个字符则退出循环

  //第二个循环条件:*s1,如果s1指向的字符串末尾退出循环

  //第二个循环条件:*s1 == *s2,如果两字符比较不等则退出循环

  while (--n && *s1 && *s1 == *s2)
  {
  s1++;//S1指针自加1,指向下一个字符

  s2++;//S2指针自加1,指向下一个字符

  }
  return( *s1 - *s2 );//返回比较结果

}

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

jimylion2011-08-29 14:37:36

chinaunix网友: 为何不需要加上*s2 ?假定s1比s2长?.....
如果s1比s2长,s2到达末尾时,*s1 == *s2 这个条件就可以判断返回了,所以不用再加上*s2这个条件了,代码还是应该追求简洁,hehe

chinaunix网友2009-08-07 11:43:22

为何不需要加上*s2 ?假定s1比s2长?

chinaunix网友2009-08-07 11:43:20

为何不需要加上*s2 ?假定s1比s2长?