【C语言】strcmp函数讲解

文章目录

  • strcmp函数:
    • 例1:`str2`前6个元素和`str1`一样,多了一个G。
    • 例2:第3个字母不同,str2元素也比str1多个G。
    • 例3:第3个字母不同,str2元素也比str1少个f。
    • 例4:第3个字母不同,str2元素也比str1少个f。
    • 例5:第3个字母不同,str2元素也比str1多个G。
    • 例6:str2元素和str1元素相同。
    • 结论:


strcmp函数:

这个函数定义在 <string.h> 头文件中,因此在使用 strcmp 函数之前,需要包含这个头文件。

strcmp 函数的原型如下:

int strcmp(const char *str1, const char *str2);

参数说明:

str1 :指向第一个字符串的指针。

str2 :指向第二个字符串的指针。

返回值:

1.str1>str2:返回正数

2.str1<str2:返回负数

3.str1==str2:返回0

strcmp 函数通过比较两个字符串的字符来工作。它从两个字符串的第一个字符开始比较,如果相同则继续比较下一个字符,直到找到不同的字符或者到达字符串的结尾。比较是基于字符的字典顺序进行的,即使用 ASCII 值来比较字符。

需要注意的是, strcmp 函数只比较字符串的内容,不比较字符串的长度。如果两个字符串在某个位置上的字符不同,那么 strcmp 将根据这些字符的 ASCII 值来返回比较结果,而不会继续比较后续的字符。

接下来,我举几个例子来方便理解。


例1:str2前6个元素和str1一样,多了一个G。

int main() {char str1[] = "ancdef";char str2[] = "ancdefG";int ret = strcmp(str1, str2);printf("%d\n", ret);return 0;
}

打印:

在这里插入图片描述

返回负数,说明str1<str2

在这里,strcmp是先比较两个数组第一个元素 ,发现一样继续比较;然后比较两个数组第二个元素,发现一样继续比较。

直到strcmp函数遇到str1第七个元素/0,说明str1结束了,而str2没结束,所以说明str1<str2,返回负数。


例2:第3个字母不同,str2元素也比str1多个G。

int main() {char str1[] = "ancdef";char str2[] = "anddefG";int ret = strcmp(str1, str2);printf("%d\n", ret);return 0;
}

打印:

在这里插入图片描述

返回负数,说明str1<str2

在这里,strcmp是先比较两个数组第一个元素 ,发现一样继续比较;然后比较两个数组第二个元素,发现一样继续比较。

直到str2第3个元素dstr1第3个元素c比较ASCII后,dASCII大于cASCII,所以说明str1<str2,返回负数。

不会去比较后面的了。


例3:第3个字母不同,str2元素也比str1少个f。

int main() {char str1[] = "ancdef";char str2[] = "andde";int ret = strcmp(str1, str2);printf("%d\n", ret);return 0;
}

打印:

在这里插入图片描述

返回负数,说明str1<str2

在这里,strcmp是先比较两个数组第一个元素 ,发现一样继续比较;然后比较两个数组第二个元素,发现一样继续比较。

直到str2第3个元素dstr1第3个元素c比较ASCII后,dASCII大于cASCII,所以说明str1<str2,返回负数。

不会去比较后面的了。


例4:第3个字母不同,str2元素也比str1少个f。

int main() {char str1[] = "anedef";char str2[] = "andde";int ret = strcmp(str1, str2);printf("%d\n", ret);return 0;
}

打印:

在这里插入图片描述

返回负数,说明str1>str2

在这里,strcmp是先比较两个数组第一个元素 ,发现一样继续比较;然后比较两个数组第二个元素,发现一样继续比较。

直到str2第3个元素dstr1第3个元素e比较ASCII后,dASCII小于eASCII,所以说明str1>str2,返回正数。

不会去比较后面的了。


例5:第3个字母不同,str2元素也比str1多个G。

int main() {char str1[] = "anedef";char str2[] = "anddefG";int ret = strcmp(str1, str2);printf("%d\n", ret);return 0;
}

打印:

在这里插入图片描述

返回负数,说明str1>str2

在这里,strcmp是先比较两个数组第一个元素 ,发现一样继续比较;然后比较两个数组第二个元素,发现一样继续比较。

直到str2第3个元素dstr1第3个元素e比较ASCII后,dASCII小于eASCII,所以说明str1>str2,返回正数。

不会去比较后面的了。


例6:str2元素和str1元素相同。

int main() {char str1[] = "ancdef";char str2[] = "ancdef";int ret = strcmp(str1, str2);printf("%d\n", ret);return 0;
}

打印:

在这里插入图片描述

直到strcmp函数遇到str1第七个元素/0str2第七个元素/0

说明str1str2都结束了,所以说明str1=str2,返回0。

结论:

所以说,strcmp函数不是简单比较两个数组元素数量的函数,而是按位比较数组元素,根据两数组对应元素出现的第一组变化来比较‘大小’进行输出的。

strcmp遇到\0就会停止。而不是说会比较两个\0
str2第七个元素/0

说明str1str2都结束了,所以说明str1=str2,返回0。


在这里插入图片描述
求三连~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/704970.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring 各版本发布时间与区别

版本版本特性Spring Framework 1.01. 所有代码都在一个项目中 2. 支持核心功能IoC、AOP 3. 内置支持Hibernate、iBatis等第三方框架 4. 对第三方技术简单封装。如&#xff1a;JDBC、Mail、事务等 5. 只支持XML配置方式。6.主要通过 XML 配置文件来管理对象和依赖关系&#xff0…

Linux 第三十三章

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

HCIP【VLAN综合实验】

目录 一、实验拓扑图&#xff1a; 二、实验要求&#xff1a; 三、实验思路&#xff1a; 四、实验步骤&#xff1a; 1、在交换机SW1,SW2,SW3配置VLAN和各个接口对应类型的配置 2、在路由器上面配置DHCP服务 一、实验拓扑图&#xff1a; 二、实验要求&#xff1a; 1、PC1 …

linux Docker在线/离线服务安装并支持centos7和centos8系统

注&#xff1a;以下内容都是经过测试;能在生产环境使用. 一、centos7版本的docker在线安装 1&#xff1a;运行以下命令&#xff0c;下载docker-ce的yum源。 sudo wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo…

做软件测试如何突破月薪20K?

IT行业从事技术岗位&#xff0c;尤其对于测试来说&#xff0c;月薪20K&#xff0c;即便在北上广深这类一线城市薪水也不算低了&#xff0c;可以说对于大部分测试岗位从业者来说&#xff0c;20K都是一个坎儿。 那么&#xff0c;问题来了&#xff0c;做软件测试如何可以达到月薪…

山东大学计算机考研数据分析,初复试占比6:4,复试内容不少得花精力准备!

山东大学&#xff08;ShandongUniversity&#xff09;&#xff0c;简称山大&#xff0c;位于中国山东&#xff0c;是中华人民共和国教育部直属的综合性全国重点大学&#xff0c;是国家“211工程”、“985工程”重点建设院校&#xff0c;入选“111计划”、“珠峰计划”、“卓越工…

Linux网络编程——HTTP协议的理解与运用

目录 前言 一、认识URL 二、认识HTTP样例 三、HTTP的报头内容 1.url 2. Content-Type 3.Method 方法 1.GET方法 2.POST方法 4、状态码 5.cookie和session 前言 我们知道&#xff0c;协议就是一种约定&#xff0c;客户端与服务端统一的用这种约定进行传输数据。我们…

AMEYA360分享:村田与Infineon公司合作开发物联网设备新解决方案

支持更加简单高效的开发活动 株式会社村田制作所与Infineon Technologies AG (总公司位于德国&#xff0c;以下简称“Infineon公司”)展开业务合作&#xff0c;提供面向物联网设备开发人员的STM32 MCU用新平台解决方案。 本解决方案由搭载Infineon公司Wi-Fi™/Bluetooth整合芯片…

【C语言】5.C语言函数(2)

文章目录 7.嵌套调⽤和链式访问7.1 嵌套调⽤7.2 链式访问 8.函数的声明和定义8.1 单个⽂件8.2 多个⽂件8.3 static 和 extern8.3.1 static 修饰局部变量8.3.2 static 修饰全局变量8.3.3 static 修饰函数 7.嵌套调⽤和链式访问 7.1 嵌套调⽤ 嵌套调用就是函数之间的互相调用。…

IDM Internet Download Manager 无法注册激活/注册按钮无法点击

Internet Download Manager 6.43破解版是一款功能强大的下载管理软件,这款软件能够帮助用户轻松高效地下载各种文件类型,无论你是想下载图片,视频,音乐,文档或是软件安装包,这款软件都能够帮你快速,稳定的下载,并且还支持多种线程下载和断点续传,很够很大程度的节省用户的时间和…

基于java的超级玛丽游戏的设计与实现(论文 + 源码)

Java的超级玛丽游戏.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89313347 基于java的超级玛丽游戏的设计与实现 摘要 近年来&#xff0c;Java作为一种新的编程语言&#xff0c;以其简单性、可移植性和平台无关性等优点&#xff0c;得到了广泛地应用。J2SE称…

每日复盘-20240515

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 国联证券 (1)|[9:25]|[133765万]|31.12 一…