字符串中strcmp和strncmp的比较

news2024/9/29 21:24:20

strcmp:函数原型是int strcmp(const char *s1,const char *s2),功能如下:若strl=str2,则返回0;若strl<str2,则返回-1;若strl>str2,则返回1

strncmp:函数原型是int strncmp( const char * strl, const charstr2, size_t n),功能是把str1和 str2进行比较,最多比较前n个字节,若str1与str2的前n个字符相同,则返回0;若s1大于s2,则返回正数;若s1小于2则返回负数。

注意:

(1)、两者比较的方法相同,都是逐个字符去比较 ACSII码,一旦比较出大小返回。

(2)、strcmp与strncmp都是用来比较字符串的,区别在于能否比较指定长度字符串,故要多传一个长度参数,这也使得strncmp比strcmp更加精细。

strcmp

#include <stdio.h>
#include <string.h>
#include <assert.h>

int myStrcmp(char *str1, char *str2)
{
	int ret = 0;
	int n_str1 = 0;
	int n_str2 = 0;
	char *bakStr1 = str1;
	char *bakStr2 = str2;

	while( *str1 != 0 && *str2 != 0 && (*str1 == *str2))
	{
		str1++;
		str2++;
	}
	if(*str1 || *str2)//还没到末尾就跳出上面的循环
	{
		str1 = bakStr1;//让str1回到bakstr1原先的位置,并根据上面跳出循环的位置进行下面操作
		str2 = bakStr2;//让str2回到bakstr2原先的位置,并根据上面跳出循环的位置进行下面操作
		while(*str1 != 0)
		{
			n_str1 += *str1;//计算str1的ACSII码
			str1++;
		}
		while(*str2 != 0)
		{
			n_str2 += *str2;//计算str2的ACSII码
			str2++;
		}
	}
	ret = n_str1 - n_str2;//比较两者ACSII码的大小
	if(ret < 0)
	{
		ret = -1;
	}
	if(ret > 0)
	{
		ret = 1;
	}
	return ret;
}
int main()
{
	char *p1 = "abcdefg";
	char *p2 = "aaceefg";

	int ret = myStrcmp(p1,p2);//-1 1 0
	
	printf("RET = %d\n",ret);
	return 0;
}

b比a大1,而后面的e比d大1,所以两者的ACSII码之和相同,输出0。

strncmp

#include <stdio.h>
#include <string.h>

int main ()
{
	char str1[15];
	char str2[15];
	int ret;

	strcpy(str1, "accdef");
	strcpy(str2, "abcdef");

	ret = strncmp(str1, str2, 4);//比较前4个

	if(ret < 0)
	{
		printf("str1 小于 str2");
	}
	else if(ret > 0) 
	{
		printf("str2 小于 str1");
	}
	else 
	{
		printf("str1 等于 str2");
	}
	
	return(0);
}

前四位中第二位时c大于b,所以str2小于str1。

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

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

相关文章

Linux/shell基础命令

Linux/shell 参考 菜鸟教程-Linux linux shell脚本-入门到实战 Linux常用命令大全 Linux下查看压缩文件内容的 10 种方法 内部结构 shell是操作系统的用户界面&#xff0c;提供了用户和内核进行交互操作的一种接口&#xff0c;实际上就是一个命令解释器&#xff0c;它接受…

Unity Shader Graph 风格化熔岩

Unity ShaderGraph 合集_哔哩哔哩_bilibili

【蓝桥杯选拔赛真题03】C++输出字母Y 青少年组蓝桥杯C++选拔赛真题 STEMA比赛真题解析

目录 C/C++输出字母Y 一、题目要求 1、编程实现 2、输入输出 二、算法分析

“如何应用数据分析提升软件开发流程效率?”

文章目录 每日一句正能量前言python能做什么&#xff1f;利用python工具进行数据分析Python 有哪些入门学习方法和值得推荐的经典教材&#xff1f;数据分析思维和方法数据分析思路明确目的或问题采用“假设”的方法入手锁定导致问题发生的原因 数据分析的基本步骤数据分析的常用…

基于Java的高校物资采购系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

【正点原子STM32连载】 第四十三章 SPI实验 摘自【正点原子】APM32F407最小系统板使用指南

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html## 第四…

RPA除了和OCR、NLP技术结合,还能和什么技术结合?

鉴于业内现在也经常把RPA称为数字员工&#xff0c;就虚拟一个人的形象来解答吧。 首先是头部&#xff0c;实现人的“听看说想”能力&#xff1a; 听&#xff1a;ASR&#xff08;语音识别技术&#xff09;&#xff0c;主要用于听取和理解语音输入&#xff0c;让RPA能处理语音数…

电商平台商品API接口知识小结

应用程序接口API&#xff08;Application Programming Interface&#xff09;&#xff0c;是提供特定业务输出能力、连接不同系统的一种约定。这里包括外部系统与提供服务的系统&#xff08;中后台系统&#xff09;或后台不同系统之间的交互点。包括外部接口、内部接口&#xf…

Parity 战略转型引热议,将如何推动波卡生态去中心化?

Polkadot 生态的区块链基础设施公司 Parity Technologies&#xff0c;最近宣布了一项重要的战略调整&#xff0c;即正在寻求在未来几个月内&#xff0c;将部分现有的市场职能转移给 Polkadot 生态系统内的多个去中心化团队&#xff0c;这将影响 Parity Technologies 未来几个月…

人性与理性共赢,真心罐头跃过增长的山海关

在北方不少地方&#xff0c;黄桃罐头是一种抚慰人心的力量。从大连起家&#xff0c;用真材实料打动人心的真心罐头&#xff0c;在朝着国民品牌前进的路上&#xff0c;需要更透彻地洞悉“人性”。 ”人的因素影响太大。我们希望可以告别个人英雄主义&#xff0c;用流程来保证可…

ChinaSoft 论坛巡礼|面向云游戏的云侧软件技术论坛

2023年CCF中国软件大会&#xff08;CCF ChinaSoft 2023&#xff09;由CCF主办&#xff0c;CCF系统软件专委会、形式化方法专委会、软件工程专委会以及复旦大学联合承办&#xff0c;将于2023年12月1-3日在上海国际会议中心举行。 本次大会主题是“智能化软件创新推动数字经济与社…

“阿里巴巴API:获取商品详情,掌握市场动态,提升竞争力!“

要使用阿里巴巴接口获得商品详情&#xff0c;需要进行以下步骤&#xff1a; 在开放平台注册账号&#xff0c;申请API调用权限。登录开放平台&#xff0c;进入API管理界面&#xff0c;在接口列表中找到“商品详情”API接口&#xff0c;点击“申请使用”。填写API申请表格&#…

理解V3中的proxy和reflect

现有如下面试题 结合GeexCode和Gpt // 这个函数名为onWatch&#xff0c;接受三个参数obj、setBind和getlogger。 // obj是需要进行监视的对象。 // setBind是一个回调函数&#xff0c;用于在设置属性时进行绑定操作。 // getlogger是一个回调函数&#xff0c;用于在获取属性时…

U盘安装Windows10系统(最新最详细图文教程)

目录 一.简介 二.安装步骤 2.1、用U盘制作PE系统 2.2 安装系统 软件&#xff1a;Windows 10版本&#xff1a;1909语言&#xff1a;简体中文大小&#xff1a;4.95G安装环境&#xff1a;PE系统&#xff0c;7代以上处理器硬件要求&#xff1a;CPU2.0GHz 内存4G(或更高&#xf…

Linux C语言开发(续)

一、二维数组的定义和存储 一、二维数组的定义 1、二维数组的应用&#xff1a;图、方阵 2、数组元素的存放顺序&#xff1a;内存是一维的&#xff0c;二维数组&#xff1a;按行优先 a[1]:表示第一行&#xff0c;也表示a[1][]的所有元素 二、二维数组的初始化、遍历 1、元素的…

吐血整理,服务端性能测试-Docker部署MySQL/Nginx(详细步骤)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 基于Docker部署My…

【CIKM 2023】扩散模型加速采样算法OLSS,大幅提升模型推理速度

近日&#xff0c;阿里云人工智能平台 PAI与华东师范大学陈岑副教授团队合作在深度学习顶级会议 CIKM 2023 上发表 OLSS (Optimal Linear Subspace Search) 算法&#xff0c;这是一种针对扩散模型的采样加速算法。在这篇论文中&#xff0c;扩散模型加速算法的本质被建模成线性子…

【软件安装环境配置】vscode 安装界面没有出现安装路径的选择 的解决,以及vscode的删除的问题

由于vscode 没有删除干净&#xff0c;就会出现vscode 安装的时候&#xff0c;没有出现安装路径的界面&#xff0c;所以可以来到vscode的安装路径&#xff0c;点击 unins000.exe 文件就可以 实现将vscode 相关的文件删除&#xff0c; 如果是删除了整个vscode 安装下的文件&…

Python 算法高级篇:跳跃表和布隆过滤器的应用

Python 算法高级篇&#xff1a;跳跃表和布隆过滤器的应用 引言 1. 跳跃表&#xff08; Skip List &#xff09;1.1 跳跃表的基本结构1.2 跳跃表的操作1.3 Python 中的跳跃表实现 2. 布隆过滤器&#xff08; Bloom Filter &#xff09;2.1 布隆过滤器的基本结构2.2 布隆过滤器的…

看懂分布式追踪系统原理及实践

前言 在微服务架构中,一次请求往往涉及到多个模块,多个中间件,多台机器的相互协作才能完成。这一系列调用请求中,有些是串行的,有些是并行的,那么如何确定这个请求背后调用了哪些应用,哪些模块,哪些节点及调用的先后顺序?如何定位每个模块的性能问题?本文将为你揭晓…