一、strcmp()与strncmp()

strcmp():strcmp(s1,s2);            比較两个字符串。

       strncmp():strncmp(s1,s2);       比較两个字符串前n位



       比較规则:从左到右逐个字符进行比較(ASCII值),直到出现不同的字符或遇到'\0'为止。

       假设所有的字符同样。则觉得两字符串相等,返回值为0。

       假设出现不同的字符,则对第一次出现不同的字符进行比較。比較方法是以s1的第一个不同的字符减去s2的第一个不同的字符。以所得差值作为返回值(大于0。则返回1,小于0则返回-1)。

代码实例:

#include<iostream>
#include<assert.h>
using namespace std; int main()
{
char a[]="aaaae";
char b[]="aaaaf"; int i=strcmp(a,b); cout<<i<<endl; int j=strncmp(a,b,4);//仅仅比較前n个字符 cout<<j<<endl; system("pause");
return 0;
}

执行结果为 -1。0。

二、strcmp()与strncmp()的详细实现

#include<iostream>
#include<assert.h>
using namespace std; int strcmp_m(const char *s1,const char *s2)
{
assert((s1!=NULL)&&(s2!=NULL)); while(*s1!='\0'&&*s2!='\0')//字符串前面部分都同样
{
if(*s1-*s2>0)
return 1;
if(*s1-*s2<0)
return -1;
s1++;
s2++;
}
if(*s1=='\0'&&*s2!='\0')//谁先为'\0',谁就小
return -1;
if(*s2=='\0'&&*s1!='\0')
return 1;
return 0; //同一时候为'\0'
} int strncmp_m(const char *s1,const char *s2,int n)
{
assert((s1!=NULL)&&(s2!=NULL)); while(*s1!='\0'&&*s2!='\0'&&n)//字符串前面部分都同样
{
if(*s1-*s2>0)
return 1;
if(*s1-*s2<0)
return -1;
s1++;
s2++;
n--;
}
if(*s1=='\0'&&*s2!='\0')//谁先为'\0',谁就小
return -1;
if(*s2=='\0'&&*s1!='\0')
return 1;
return 0; //同一时候为'\0'
} int main()
{
char a[]="aaaae";
char b[]="aaaaf"; int i=strcmp_m(a,b); cout<<i<<endl; int j=strncmp_m(a,b,4);//仅仅比較前n个字符 cout<<j<<endl; system("pause");
return 0;
}

执行结果为 -1,0。实现了strcmp()函数与strncmp()函数的功能。

最新文章

  1. css3弹性盒子温习
  2. Chrome开发工具Elements面板(编辑DOM和CSS样式)详解
  3. c++标准模板库algorithm头文件中accumulate算法的代码
  4. paip.python ide 总结最佳实践o4.
  5. 【卡西欧Fx5800-p程序】01 坐标转换程序-带注释
  6. 导入maven项目后无法找到sun tools toos-15.0.jar
  7. [开发笔记]-页面切图、CSS前端设计、JS
  8. iOS-APP的沙河目录
  9. Table of Contents - 设计模式
  10. 判断两个View的GRect是否相等
  11. 进程和线程之间的关系和区别 和 CPU牒
  12. LA2965 n个数中选出最多个数异或和为0
  13. 【Tesseract】Tesseract API在VS 2013中的配置以及调用
  14. [SDOI2009]E&amp;D
  15. jmeter学习记录--05--Beanshell2
  16. JS,JQ实现模拟暂停FOR循环,间隔几秒后再继续执行
  17. Django表单字段汇总
  18. Oracle组成介绍
  19. linux 软件包管理介绍
  20. GRE封装解封装过程

热门文章

  1. IntelliJ IDEA Mac破解教程
  2. String和StringBuffer的机制差别
  3. BZOJ 3524 [Poi2014]Couriers(可持久化线段树)
  4. POJ 3068 &quot;Shortest&quot; pair of paths(费用流)
  5. gnuplot加速比比较图
  6. Scala高手实战****第20课:Scala提取器、注解深度实战详解及Spark源码鉴赏
  7. IntelliJ IDEA字符串常量长度太长的问题解决:constant string too long
  8. 【mybatis】service层中一个方法中使用mybatis进行数据库的 多个修改操作,可能是update也可能是delete操作,但是sql语句命名执行并且在控制台打印出来了,但是数据库中未更新到数据【事务的问题】
  9. iOS:CocoaPods详解
  10. Malware