重生之我是一名程序员 44 ——字符串函数(3)

哈喽啊大家晚上好!迄今为止我已近给大家介绍了2个字符串函数,今天呢再给大家带来一个字符串函数——strcmp函数。

首先呢还是先带大家认识一下它。strcmp函数是C语言中的字符串函数之一,用于比较两个字符串是否相等。

该函数原型为:

int strcmp(const char *s1, const char *s2)

其中,s1和s2是要比较的两个字符串,返回值为int类型。当s1和s2相等时,返回0;当s1小于s2时,返回负数;当s1大于s2时,返回正数。

该函数的比较方式是按照字符的ASCII值依次进行比较,直到找到不同的字符为止。如果两个字符串完全相同,则需要比较完全部字符才能判断相等。

为了更方便大家去了解strcmp函数,我来带大家模拟实现一下它。代码如下:

int strcmp(const char* str1, const char* str2) {while (*str1 && (*str1 == *str2)) {str1++;str2++;}return *(const unsigned char*)str1 - *(const unsigned char*)str2;
}

该函数接受两个指向字符串的指针作为参数,通过while循环比较两个字符串的每个字符,直到遇到相异的字符或到达字符串的结束标志(即'\0')。在比较过程中,每次移动两个指针,直到两个字符串的相应字符不同。如果两个字符串相同,则返回0,否则返回字符差值,差值的大小取决于它们之间的ASCII码值差异。由于字符串的每个字符在存储时都是使用ASCII码值,因此类型转换为(unsigned char*),以防止有符号扩展带来的不必要的问题。

最后嘞,我再给大家举几个例子方便大家知道如何运用strcmp函数。比如:

  1. 比较两个字符串是否相等:
char str1[] = "hello";
char str2[] = "world";
if (strcmp(str1, str2) == 0) {printf("两个字符串相等\n");
} else {printf("两个字符串不相等\n");
}

 

      2.比较两个字符串的字典序大小:

char str1[] = "apple";
char str2[] = "banana";
if (strcmp(str1, str2) < 0) {printf("str1 比 str2 小\n");
} else if (strcmp(str1, str2) > 0) {printf("str1 比 str2 大\n");
} else {printf("str1 和 str2 相等\n");
}

 

      3.比较一个字符串是否是另一个字符串的前缀:

char str1[] = "hello, world";
char str2[] = "hello";
if (strncmp(str1, str2, strlen(str2)) == 0) {printf("str2 是 str1 的前缀\n");
} else {printf("str2 不是 str1 的前缀\n");
}

 

      4.比较两个字符串的前 n 个字符是否相等:

char str1[] = "hello, world";
char str2[] = "hello, everybody";
int n = 5;
if (strncmp(str1, str2, n) == 0) {printf("str1 和 str2 的前 %d 个字符相等\n", n);
} else {printf("str1 和 str2 的前 %d 个字符不相等\n", n);
}

那么到此,相信大家也认识和知道如何运用strcmp函数啦,那今天的分享就到此结束啦,各位明天见! 

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

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

相关文章

mysql中的锁及其作用

在MySQL中&#xff0c;锁是用于控制对数据库对象的并发访问的一种机制。锁可以防止多个事务同时对同一数据进行修改或删除&#xff0c;以确保数据的完整性和一致性。 MySQL中的锁有以下几种类型&#xff1a; 共享锁&#xff08;Shared Lock&#xff09;&#xff1a;也称为读锁&…

短视频运营常用的ChatGPT通用提示词模板

短视频定位和策划&#xff1a;请帮助我明确短视频的定位和策划&#xff0c;包括目标受众、主题、风格、内容等方面的内容&#xff0c;以便我能够更好地制定短视频运营策略。 短视频制作&#xff1a;请帮助我制作高质量的短视频&#xff0c;包括脚本编写、拍摄、剪辑、特效等方…

Hive安装与配置

你需要掌握&#xff1a; 1.Hive的基本安装&#xff1b; 2.Mysql的安装与设置&#xff1b; 3.Hive 的配置。 注意&#xff1a;Hive的安装与配置建立在Hadoop已安装配置好的情况下。 hadopp安装与配置 Hive 的基本安装 从 官网 下载Hive二进制包&#xff0c;下载好放在/op…

万人拼团团购小程序源码系统+拼团设置+拼团管理 附带完整的搭建教程

随着互联网的快速发展&#xff0c;电子商务和社交电商的兴起&#xff0c;团购作为一种高效的营销策略和消费方式&#xff0c;受到了广大消费者的热烈欢迎。在此背景下&#xff0c;我们开发了一款基于微信小程序的万人拼团团购系统&#xff0c;旨在为用户提供一种更加便捷、高效…

python爬虫进阶教程之如何正确的使用cookie

文章目录 前言一、获取cookie二、程序实现三、动态获取cookie四、其他关于Python爬虫技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Pytho…

lxml 总结

xm 和 lxml库 哪个更好用点 1. 性能&#xff1a; lxml 通常比 xml.etree.ElementTree 更快。lxml 使用了 C 编写的底层解析器&#xff0c;因此在处理大型 XML 文档时可能更高效。 如果性能对你的应用很重要&#xff0c;特别是在处理大型 XML 文件时&#xff0c;选择 lxml 可能…

TrueLicense实现授权管理

1、生成前准备 在生成授权文件前&#xff0c;首先需要密钥对插入&#xff1a;密钥对分为公钥与私钥&#xff0c;私钥需要本地储存不泄露&#xff0c;公钥需要对外提供&#xff1b;私钥内部包含证书&#xff0c;对于授权文件进行数字签名&#xff0c;相当于加密的步骤&#xff0…

这款高性能分布式ID生成器,现在是你的了~

这是DDD&微服务系列的第17篇&#xff0c;欢迎持续关注~ 概述 在软件开发过程中&#xff0c;我们经常会遇到需要生成全局唯一流水号的场景&#xff0c;例如各种流水号和分库分表的分布式主键ID。特别是在使用MySQL数据库时&#xff0c;除了要求流水号具有“全局唯一”性外&…

VTK 读取、预处理、处理和可视化医学图像数据的过程

开发环境&#xff1a; Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example demo解决问题&#xff1a; VTK 读取、预处理、处理和可视化医学图像数据的过程 图像读取和预处理&#xff1a; 程序使用 VTK 的图像阅读器vtkImageReader2Factor…

继电保护-变压器纵联差动保护MATLAB仿真模型

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 原理概述 差动保护是在两端设置的保护&#xff0c;通过比较两端测回来的电气量&#xff0c;进而看是否需要动作&#xff0c;纵联差动保护是变压器主保护。 纵联差动保护基本原则 双绕组变压器实现纵联差动…

notepad ++ 常用快捷键 【程序员必看】

目录 notepad 常用快捷键 一 安装notepad 二 快捷键 三 改变主题 四 设置tab键 五 自动换行 六 自动补全 七 创建保存文件 八同时编辑两个文件 九保持Notepad代码高亮风格到网页或word中 十插件安装 十一使用notepad解决实际问题 CtrlC 复制 CtrlX 剪切 CtrlV 粘贴…

泄密零容忍!迅软科技打造设计图纸安全防线,助您无忧创作!

对于建筑设计、鞋服设计、动漫设计、平面设计等设计行业而言&#xff0c;海量设计图纸都以电子数据的形式存在企业的终端电脑上&#xff0c;这些图纸蕴含着企业的核心竞争资源&#xff0c;一旦泄露将给企业带来巨大的经济损失。 因此&#xff0c;迅软科技采用了先进的数据加密技…

Ruoyi-cloud / 若依 SpringCloud服务器部署

1、redis 环境 服务器安装redis &#xff0c;注意 密码 端口 2、mysql 环境 服务器安装 mysql 5.7 以上的版本 代码中的sql 文件夹中有 sql 文件 创建数据库ry-cloud并导入数据脚本ry_2021xxxx.sql&#xff08;必须&#xff09;&#xff0c;quartz.sql&#xff08;可选&…

同旺科技 USB 转 RS-485 适配器 -- 隔离型

内附链接 1、USB 转 RS-485 适配器 隔离版主要特性有&#xff1a; ● 支持USB 2.0/3.0接口&#xff0c;并兼容USB 1.1接口&#xff1b; ● 支持USB总线供电&#xff1b; ● 支持Windows系统驱动&#xff0c;包含WIN10 / WIN11 系统32 / 64位&#xff1b; ● 支持Windows …

使用vue-admin-template时,需要注意的问题,包括一定要去除mock.js注释

在使用vue-admin-template等前端框架时&#xff0c;如果你没有打算用他们的mock数据&#xff0c;在生产环境下一定要注释mock引用的代码&#xff0c;虽然它没有被调用&#xff0c;但是如果你不注释&#xff0c;就会被打包进去。 找到main.js&#xff0c;看如下代码&#xff1a…

读天下杂志读天下杂志社读天下编辑部简介

《读天下》杂志是国家新闻出版署批准,吉林省舆林报刊发展有限责任公司主管,吉林省舆林报刊发展有限责任公司主办的面向全国发行的艺术文化生活期刊。国内统一刊号&#xff1a;CN:22-1401/G2&#xff0c;国际标准刊号&#xff1a;ISSN:2095-2112。 《读天下》投稿邮箱&#xff1…

八、Lua数组和迭代器

一、Lua数组 数组&#xff0c;就是相同数据类型的元素按一定顺序排列的集合&#xff0c;可以是一维数组和多维数组。 在 Lua 中&#xff0c;数组不是一种特定的数据类型&#xff0c;而是一种用来存储一组值的数据结构。 实际上&#xff0c;Lua 中并没有专门的数组类型&#xf…

根据端口查找进程

关闭kibana kibana自带命令 kibana没有提供关闭命令&#xff0c;通过命令 ps -ef|grep kibana查找不到kibana相关的信息。 可以通过进程暴露的端口来查找 netstat -anltp|grep 5601获取到进程号&#xff0c;然后kill掉进程 kill -9 进程号Docker管理Kibana 但是如果使用D…

OpenHarmony亮相MTSC 2023 | 质量效率共进,赋能应用生态发展

11月25日&#xff0c;MTSC 2023第十二届中国互联网测试开发大会在深圳登喜路国际大酒店圆满举行。大会以“软件质量保障体系和测试研发技术交流”为主要目的&#xff0c;旨在为行业搭建一个深入探讨和交流的桥梁和平台。OpenAtom OpenHarmony&#xff08;简称“OpenHarmony”&a…

Linux概述

Linux概述 1、操作系统 ​ 定义&#xff1a;操作系统(Operating System&#xff0c;简称OS)是管理计算机硬件与软件资源的计算机程序 ​ 作用&#xff1a;是把计算机系统中对硬件设备的操作封装起来&#xff0c;供应用软件调用&#xff0c;也是提供一个让用户与系统交互的操…