字符串函数---strcmp()与strncmp()具体解释及实现
一、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()函数的功能。
字符串函数---strcmp()与strncmp()具体解释及实现的更多相关文章
- 字符串函数---strcmp()与strncmp()详解及实现【转】
本文转载自:http://blog.csdn.net/lanzhihui_10086/article/details/39829623 一.strcmp()与strncmp() strcmp():st ...
- PHP 语法字符串函数 strcmp、strlen 使用及实现
说明 这里基于 php7.2.5 进行测试,php7 之后内部结构变化应该不是太大,但与 php5.X 有差别. 函数分类 用户自定义函数 say(); function say() { echo & ...
- 字符串函数---strcat()与strncat具体解释及实现
一.strcat()与strncat() strcat():strcat(dest,src); strcat把src所指向的字符加入到dest结尾处(覆盖原dest结尾处的'\0').并 ...
- C语言-字符串函数的实现(一)之strlen
C语言中的字符串函数有如下这些 获取字符串长度 strlen 长度不受限制的字符串函数 strcpy strcat strcmp 长度受限制的字符串函数 strncpy strncat strncmp ...
- 字符串函数的实现(三)之strcat
C语言中的字符串函数有如下这些 获取字符串长度 strlen 长度不受限制的字符串函数 strcpy strcat strcmp 长度受限制的字符串函数 strncpy strncat strncmp ...
- C语言-字符串函数的实现(五)之strstr
C语言中的字符串函数有如下这些 获取字符串长度 strlen 长度不受限制的字符串函数 strcpy strcat strcmp 长度受限制的字符串函数 strncpy strncat strncmp ...
- C语言-字符串函数的实现(二)之strcpy
C语言中的字符串函数有如下这些 获取字符串长度 strlen 长度不受限制的字符串函数 strcpy strcat strcmp 长度受限制的字符串函数 strncpy strncat strncmp ...
- 实现字符串函数,strlen(),strcpy(),strcmp(),strcat()
实现字符串函数,strlen(),strcpy(),strcmp(),strcat() #include<stdio.h> #include<stdlib.h> int my_ ...
- 内置函数 字符串比较 strcmp 登录密码
1 //内置函数 字符串比较 strcmp 2 // 原理:将两个字符串从首字母开始,按照ASCII码的顺序逐个比较 3 //字符串1 == 字符串2 返回0 4 //字符串1 < 字符串2, ...
随机推荐
- Mybatis添加&&删除&&更新
mapper <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC & ...
- IntelliJ IDEA强制更新Maven的包
1.手动删除Project Settings里面的Libraries内容,[Ctrl]+[Alt]+[Shift]+[S],全选之后点击左上角的减号按钮. 2.在Maven Project的试图里的L ...
- Word里如何打出带有上下横杠的大写字母i
换成新罗马就行了.
- easyui-validatebox 的简单长度验证
验证: 页面代码: <form id="invoiceEdit"> <input id="fpdm" name="fpdm" ...
- SQLSERVER调用DLL程序
在SQL Server中调用dll分为两个步骤 1.创建一个dll文件(dll文件分成3种类型,讲其中一种) 2.把dll文件放进SQL Server的程序集中.然后定义一个Function,就可以通 ...
- oracle 10g函数大全--聚合函数
AVG([distinct|all]x) [功能]统计数据表选中行x列的平均值. [参数]all表示对所有的值求平均值,distinct只对不同的值求平均值,默认为all 如果有参数distinct或 ...
- Kafka查看偏移量报错:WARN WARNING: ConsumerOffsetChecker is deprecated and will be dropped in releases following 0.9.0. Use ConsumerGroupCommand instead.
Kafka0.9版本后,命令ConsumerOffsetChecker已弃用,用新的命令来查. // 列表 bin/kafka-consumer-groups.sh --zookeeper local ...
- mvn test 中文乱码
有两种解决办法: 1.设置encoding:<argLine>-Dfile.encoding=UTF-8</argLine>,解决读取文件中的中文乱码问题 2.升级maven- ...
- 怎样制作一个横版格斗过关游戏 Cocos2d-x 2.0.4
本文实践自 Allen Tan 的文章<How To Make A Side-Scrolling Beat 'Em Up Game Like Scott Pilgrim with Coco ...
- Office如何加密解密
1 任意打开一个EXCEL文档,并点击工具,选项,切换到安全性选项卡,任意设置密码 设置密码保护之后再次打开就需要输入密码 我们使用该软件Office PassWord Remover打开该文档( ...