C++实现strcmp字符串比较的深入探讨
strcmp的实现
函数简介原型:extern int strcmp(const char *s1,const char * s2);
用法:加头文件 #include <string.h>
功能:比较字符串s1和s2。
一般形式:strcmp(字符串1,字符串2)
返回值:
当s1<s2时,返回值<0
当s1=s2时,返回值=0
当s1>s2时,返回值>0
即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:"A"<"B" "a">"A" "computer">"compare"
特别注意:
1. strcmp(const char *s1,const char * s2)这里面只能比较字符串,不能比较数字等其他形式的参数。
2. 关于返回值,标准只是规定三个值:小于零,零,大于零。具体是什么值编译器自己定的,所以编程时候判断小于等于大于,不能判断是否等于1或者-1,如在VC中strcmp("123","1234") 返回-1,而在TC中返回-52。
下面是我自己的实现,不足之处,还望指正!(我这里的返回-1,0,1)
代码如下:
#include "stdafx.h"
#include <iostream>
#include <assert.h>
using namespace std;
<P>int mystrcmp(const char* str1,const char* str2)
{
assert(str1 != NULL && str2 != NULL);</P><P> while(*str1 && *str2 && *str1 == *str2)
{
++str1;
++str2;
}
if (*str1 > *str2)
return 1;
if (*str1 < *str2)
return -1;
else
return 0;
}</P>int _tmain(int argc, _TCHAR* argv[])
{
char *str1 = "Hello World";
char *str2 = "Hello world";
cout << mystrcmp(str1,str2) << endl;
return 0;
}
相关推荐
-
C语言中strcmp的实现原型
C语言中strcmp的实现原型 实现代码: int __cdecl strcmp ( const char * src, const char * dst ) { int ret = 0 ; while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst) ++src, ++dst; if ( ret < 0 ) ret = -1 ; else if ( ret > 0 ) ret = 1 ; ret
-
C语言中strlen() strcpy() strcat() strcmp()函数的实现方法
strlen函数原型:unsigned int strlen(const char *);返回的是字符串中第一个\0之前的字符个数. 1.strcat函数原型char* strcat(char* dest,const char* src); 进行字符串的拼接,将第二个字符串连接到第一个字符串中第一个出现\0开始的地方.返回的是拼接后字符的首地址.并不检查第一个数组的大小是否可以容纳第二个字符串.如果第一个数组的已分配的内存不够容纳第二个字符串,则多出来的字符将会溢出到相邻的内存单元. 2.str
-
浅谈C语言中strcpy,strcmp,strlen,strcat函数原型
实例如下: //strcat(dest,src)把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0' char *strcat(char * strDest, const char *strSrc) { char *res=strDest; assert((strDest!=NULL)&&(strSrc!=NULL)); while(*strDest)strDest++; while(*strDest=*strSrc) { strDest++; strSrc
-
C++实现strcmp字符串比较的深入探讨
strcmp的实现函数简介原型:extern int strcmp(const char *s1,const char * s2); 用法:加头文件 #include <string.h> 功能:比较字符串s1和s2.一般形式:strcmp(字符串1,字符串2)返回值: 当s1<s2时,返回值<0 当s1=s2时,返回值=0 当s1>s2时,返回值>0 即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止.如:"A
-
C语言字符串函数操作(strlen,strcpy,strcat,strcmp)详解
目录 一.strlen函数模拟 二. strcpy函数模拟 三.strcat函数模拟 四.strcmp函数模拟 总结 一.strlen函数模拟 字符串以'\0'作为结束标志,strlen函数返回的是在字符串中'\0'前面出现的字符个数(不包括'\0'); 有三种方法可以实现该操作: ①计数器方式 ②不能创建临时变量计数器 ③指针-指针 方法一:计数器方式 int my_strlen(const char* str) { int count = 0;//定义count用来记录字符串数组中字符数
-
C语言字符串函数操作(strlen,strcpy,strcat,strcmp)详解
目录 一.strlen函数模拟 二. strcpy函数模拟 三.strcat函数模拟 四.strcmp函数模拟 总结 一.strlen函数模拟 字符串以‘\0’作为结束标志,strlen函数返回的是在字符串中‘\0’前面出现的字符个数(不包括‘\0’); 有三种方法可以实现该操作: ①计数器方式 ②不能创建临时变量计数器 ③指针-指针 方法一:计数器方式 int my_strlen(const char* str) { int count = 0;//定义count用来记录字符串数组中字符数 w
-
浅析51个PHP处理字符串的函数
包括,计算字符串长度.分割字符串.查找字符串等等各个方面.1.AddSlashes: 字符串加入斜线. 2.bin2hex: 二进位转成十六进位. 3.Chop: 去除连续空白. 4.Chr: 返回序数值的字符. 5.chunk_split: 将字符串分成小段. 6.convert_cyr_string: 转换古斯拉夫字符串成其它字符串. 7.crypt: 将字符串用 DES 编码加密. 8.echo: 输出字符串. 9.explode: 切开字符串. 10.flush: 清出输出缓冲区. 11
-
浅谈C语言之字符串处理函数
下面介绍8种基本的常用的字符串处理函数,在数值数组中也常常用到(部分函数).所有的C语言编译系统中一般都提供这些函数. 1.puts函数--输出字符串的函数 一般的形式为puts(字符串组) 作用:将一个字符串输出到终端.如,char一个string,并赋予初值.调用puts(string);进行字符串的输出. 2.gets函数--输入字符串的函数 一般的形式:gets(字符数组) 作用:从终端输入一个字符串到字符数组,并且得到一个函数值成为字符数组的起始地址. gets(str); 键盘输入,
-
C语言字符串函数入门
目录 实现字符串库函数功能 1.strlen函数 2.strcmp函数 3.strcpy函数 4.strcat函数 5.strupr函数 6.strlwr函数 总结 实现字符串库函数功能 有些时候我们可能会被限制无法使用库函数,这个时候我们需要编写自己的库函数.但了解了字符串库函数的功能之后,想要实现并不困难,今天我们用数组和循环来简单实现几个字符串库函数的功能. 1.strlen函数 strlen函数使用来求字符串长度的,遇到\0就会停止,并返回字符串的长度,接下来根据这个特性来编写一下我们自
-
C语言字符串函数与内存函数精讲
目录 strlen strcpy strcat strcmp strncpy strncat strncmp strstr strtok strerror tolower\toupper memcpy memmove memcmp memset strlen 获取字符串长度. strlen - size_t strlen( const char *string ); 1.字符串以’\0’作为结束标志,strlen函数返回的是在字符串中’\0’前面出现的字符个数(不包含’\0’). 2.参数指向的
-
C++基础知识总结
不管是自我定位太高,还是职位层次太低,系统复习了一遍很久没有摸过的C++总是有好处的.总结如下: 一.new和malloc的区别 1.new和delete配对,释放数组需要用delete[].new和delete实际上调用了malloc和free,另外调用了类的构造函数和析构函数. 2.malloc和free配对,malloc返回的是void指针,需要强转. 3.new申请的内存保存在堆中,malloc申请的内存保存在自由存储区. 二.C++运算符 1.取模操作符:% 2.逻辑否.与.或:!,
-
PHP字符函数大全第1/2页
AddSlashes: 字符串加入斜线. bin2hex: 二进位转成十六进位. Chop: 去除连续空白. Chr: 返回序数值的字符. chunk_split: 将字符串分成小段. convert_cyr_string: 转换古斯拉夫字符串成其它字符串. crypt: 将字符串用 DES 编码加密. echo: 输出字符串. explode: 切开字符串. flush: 清出输出缓冲区. get_meta_tags: 抽出文件所有 meta 标记的资料. htmlspe
-
关于初学PHP时的知识积累总结
PHP基础一.初识PHPPHP是与HTML混合使用的嵌入式语言.1.PHP标记默认标记<?php ?> 短标记<? ?>,需在php.ini中将short_open_tag选项开启 短标记和其他标记不提倡使用 2.关键字不区分大小写,用户自定义的类名和函数名不区分大小写,变量名区分大小写 3.输出boolean print(参数) 返回布尔值void echo(参数) 无返回值echo的效率要高一点 二.数据类型1.比较两个浮点数的通常方法是先移动若干小数位,然后转换为整型数据再进
随机推荐
- 详解Vue学习笔记进阶篇之列表过渡及其他
- 基于gulp合并压缩Seajs模块的方式说明
- bat批处理批量修改文件扩展名的方法
- Docker 常用命令详细整理
- 使用JSONObject生成和解析json的方法
- 浅谈Python浅拷贝、深拷贝及引用机制
- C#连接到sql server2008数据库的实例代码
- MySQL中的max()函数使用教程
- 解决php中Cannot send session cache limiter 的问题的方法
- php REMOTE_ADDR之获取访客IP的代码
- Flex中最好的MVC框架Mate框架
- 利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
- php中函数的形参与实参的问题说明
- 基于list循环删除元素,迭代器失效的问题详解
- python re模块findall()函数实例解析
- vue-cli webpack模板项目搭建及打包时路径问题的解决方法
- springboot+springmvc+mybatis项目整合
- SpringBoot 2.0 整合sharding-jdbc中间件实现数据分库分表
- shell脚本实现日历的屏幕控制
- node.js中fs文件系统目录操作与文件信息操作