字符串函数---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, ...
随机推荐
- 1.3(学习笔记)Servlet获取表单数据
一.Servlet获取表单数据 表单提交数据经由Servlet处理,返回一个处理结果显示在页面上, 那么如何获取表单提交的参数进出相应的处理呢? 主要用到以下方法: String getParame ...
- C#中函数库方式重复播放MP3音乐
public void play() { this.TemStr = ""; this.TemStr = this.TemStr.PadLeft(0x7f, Convert.ToC ...
- python的turtle模块画折线图
代码如下: import turtle yValues = [10.0,7.4,6.4,5.3,4.4,3.7,2.6] def main(): t = turtle.Turtle() t.hidet ...
- java工具类获取properties文件的配置
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.i ...
- ClipboardJS复制粘贴插件的使用
1.简单的纯JS复制粘贴(兼容性差,只能用textarea标签) var btn=document.getElementsByClassName("btn")[0]; //复制按钮 ...
- 学习实践:使用模式,原则实现一个C++数据库訪问类
一.概述 在我參与的多个项目中.大家使用libMySQL操作MySQL数据库,并且是源代码级复用,在多个项目中同样或相似的源代码.这种复用方式给开发带来了不便. libMySQL的使用比較麻烦.非常e ...
- FL2440 ubifs文件系统烧录遇到的问题——内核分区的重要性
之前用的文件系统是initramfs的,这种文件系统是编译进内核里的,而开机之后内核是写在内存中的,所以每次掉电之后写进文件系统中的东西都会丢失.所以决定换成ubifs的文件系统.这种文件系统是跟内核 ...
- 主流浏览器CSS3和HTML5兼容性
各大主流浏览器对 CSS3 和 HTML5 的支持越来越完善,曾经让多少前端开发人员心碎的IE系也开始拥抱标准.就在前几天,W3C的 HTML5 社区领袖 Shelley 宣布,HTML5的开发工作已 ...
- javascript 递归函数调用(recursive funciton call)
所谓的递归函数调用,就是自己调用自己的函数. var timerHandler = null; function a(){ console.log(123); timerHandler = setTi ...
- jsp 页面图片为圆形
直接设置img标签的style属性即可 <img alt="" src="链接地址" style="width: 80px;height: 80 ...