字符串函数---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, ...
随机推荐
- C++类的复习
1.C++ 类的声明:class class_name{ private: /* *私有的数据和成员函数 *只能被本类中的成员函数引用,类外不能调用 ...
- windbg --sqlserver 实例 转
http://blog.csdn.net/obuntu/article/details/5962378 SQLSERVER DUMP 调试 在下面的对话框输入 ~ 会出现线程的信息 0:000> ...
- 【spring data jpa】jpa中使用count计数方法
spring data jpa中使用count计数方法很简单 直接在dao层写方法即可 int countByUidAndTenementId(String parentUid, String ten ...
- cocos2dx -lua 面向对象-转
转自:http://www.himigame.com/lua-game/1282.html 上一篇中,向童鞋们介绍了如何自定义类binding到Lua中供给使用的教程,那么本篇将介绍利用OOP思想在在 ...
- C#远程获取图片文件流的方法【很通用】
因为之前写的代码,也能获取到图片流信息,但是会是凌乱的线条,后百度得这个方法,必须记录一下 C# try { WebRequest myrequest = WebRequest.Create(Http ...
- java只有值传递,不存在引用传递
今天,我在一本面试书上看到了关于java的一个参数传递的问题: 写道 java中对象作为参数传递给一个方法,到底是值传递,还是引用传递? 我毫无疑问的回答:“引用传递!”,并且还觉得自己对java的这 ...
- PostgreSQL配置文件--连接和认证
1 连接和认证 CONNECTIONS AND AUTHENTICATION 1.1 连接 CONNECTIONS 1.1.1 listen_addresses 字符型 默认: listen_addr ...
- Windows 2008 R2
1简介 Windows 2008 R2是微软针对windows 7所推出的Windows server操作系统.为了使企业减少操作成本和提高效率,Windows Server 2008 R2对企业资源 ...
- javascript快速入门18--样式
修改元素外观方式 修改元素外观主要有下面3种方法:修改ID,修改className,修改元素的style属性 修改ID?会造成多么混乱的结果可想而知! 修改className确实是非常好的方法,我们甚 ...
- 顶点缓存对象(VBO)【转】
http://www.cnblogs.com/hefee/p/3824300.html 顶点缓存对象(VBO) 创建VBO 绘制VBO 更新VBO 实例 GL_ARB_vertex_buffer_ob ...