模拟实现C语言--strcmp函数

news2024/11/18 1:51:11

模拟实现C语言–strcmp函数

文章目录

  • 模拟实现C语言--strcmp函数
  • 一、strcmp函数是什么?
  • 二、使用示例
  • 三、模拟实现
    • 3.1 模拟实现方式一
    • 3.2 模拟实现方式二


一、strcmp函数是什么?

字符串比较函数:比较的是对应位置的ASCII值

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

标准规定:

  1. 第一个字符串大于第二个字符串,则返回大于0的数字
  2. 第一个字符串等于第二个字符串,则返回0
  3. 第一个字符串小于第二个字符串,则返回小于0的数字

二、使用示例

#include <stdio.h>
int main()
{
	char str[] = "hel";
	char arr[20] = "hello ";
	int ret = strcmp(arr, str);
	printf("%d", ret);
	return 0;
}

vs环境下得出的值是1,不同环境下得出的具体数值不同,但都是正数

在这里插入图片描述

三、模拟实现

3.1 模拟实现方式一

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

int my_strcmp(const char* dest, const char* src)
{
	assert(dest != NULL);
	assert(src != NULL);
	while (*dest == *src)
	{
		if (*dest == '\0')
			return 0;
		dest++;
		src++;
	}
	if (*dest > *src)
	{
		return 1;
	}
	else
	{
		return -1;
	}

}


int main()
{
	char str[] = "hel";
	char arr[20] = "hello ";
	int ret = my_strcmp(arr, str);
	printf("%d", ret);
	return 0;
}

在这里插入图片描述

3.2 模拟实现方式二

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <assert.h>

int my_strcmp(const char* src, const char* dst)
{
    int ret = 0;
    assert(src != NULL);
    assert(dst != NULL);
    while (!(ret = *(unsigned char*)src - *(unsigned char*)dst) && *dst)
        ++src, ++dst;
    if (ret < 0)
        ret = -1;
    else if (ret > 0)
        ret = 1;
    return(ret);
}


int main()
{
	char str[] = "hel";
	char arr[20] = "hello ";
	int ret = my_strcmp(arr, str);
	printf("%d", ret);
	return 0;
}

在这里插入图片描述

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

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

相关文章

saml协议中生成jks

JKS简介 JKS是Java Key Store的缩写&#xff0c;是 Java 语言开发的一种密钥库格式&#xff0c;它包含了证书和私钥&#xff0c;可以用来加密、认证和签署数字信息。 环境 $ uname -a Linux yanlp 3.10.0-1160.92.1.el7.x86_64 #1 SMP Tue Jun 20 11:48:01 UTC 2023 x86_64 …

基于Qt实现的可视化大屏监控

基于Qt实现的可视化大屏监控 先上图 基于Qt实现的可视化大屏监控 总有人质疑QWidget实现不了炫酷的界面&#xff0c;其实QWidget已经很强大了&#xff0c;虽然很多效果没有现成的框架&#xff0c;所以比不上html5或者安卓这种&#xff0c;但是也能实现很多不错的效果了&#…

文案生成-帮助我们应对文案创作过程中的痛点

在数字化时代&#xff0c;文案生成变得前所未有的重要。从广告营销到社交媒体发布&#xff0c;从网站内容到产品描述&#xff0c;文案无处不在&#xff0c;它们不仅仅是文字的组合&#xff0c;更是一种引导、影响和唤起共鸣的力量。然而&#xff0c;随着文案需求的不断增长&…

云计算——ACA学习 云计算分类

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号&#xff1a;网络豆 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a; 网络豆的主页​​​​​ 目录 写在前面 前期回顾 本期介绍 一.云计算分类 1.公有云…

【Anaconda】管理你的环境和包

Anaconda 管理环境与包 管理环境管理包 管理环境 查看环境 conda env list激活环境 # enname 替换为要激活的环境名称 conda activate envname创建环境 # myenv 为创建的环境的名称 # python3.8 为指定环境中py版本为3.8 conda create --name myenv python3.8删除环境 # myenv …

【web开发】8、Django(3)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、管理员1.表结构2.layout.html文件下添加管理员账号的导航3.urls.py文件&#xff08;POST请求传递nid&#xff09;4.form.py文件(密码加密&#xff0c;确认密…

辉瑞与吉利德科学:制药巨头的新冠病毒之战

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 总结&#xff1a; &#xff08;1&#xff09;猛兽财经认为&#xff0c;华尔街低估了辉瑞&#xff08;PFE&#xff09;和吉利德科学&#xff08;GILD&#xff09;的前景&#xff0c;因为它们在开发新冠病毒疫苗和药物方面都…

安达发|APS软件系统的发展进化史

从古至今&#xff0c;生产计划一直是制造业的核心。无论是古代的手工作坊&#xff0c;还是现代的自动化工厂&#xff0c;都需要一种有效的方法来安排和调度生产活动。这就是我们今天要谈论的主题——高级排产软件&#xff08;APS&#xff09;的起源和发展。 1. 初识APS&#xf…

碳化硅夹阻整流器(PBR)

标题&#xff1a;Silicon Carbide Pinched Barrier Rectifier (PBR) 摘要 本文首次提出一种碳化硅&#xff08;SiC&#xff09;中的新型整流器结构。所提出的结构既不涉及肖特基接触也不涉及通过P-N结的少数载流子注入。当相邻的P区域放置得足够近时&#xff0c;形成了用于整流…

C语言练习题解析:挑战与突破,开启编程新篇章!(4)

&#x1f493;博客主页&#xff1a;江池俊的博客⏩收录专栏&#xff1a;C语言刷题专栏&#x1f449;专栏推荐&#xff1a;✅C语言初阶之路 ✅C语言进阶之路&#x1f4bb;代码仓库&#xff1a;江池俊的代码仓库&#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐ 文…

药店销售系统设计与实现

目 录 摘要 Ⅰ Abstract Ⅱ 第1章 绪论 1 1.1选题意义 1 1.1.1选题背景 1 1.1.2选题意义 1 1.2系统方案 1 1.3可行性分析 1 1.3.1技术可行性分析 1 1.3.2经济可行性分析 1 第2章 系统主要功能及界面设计 3 2.1系统功能分析 3 2.1.1系统功能分析 3 2.1.2 数据库结构设计 4 2.2界…

Centos7 禁止ping的几种方式

参考链接 https://cloud.tencent.com/developer/article/1448499 1. #禁ping echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all #启用ping echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all#编辑配置 vim /etc/sysctl.conf #设置禁ping&#xff08;如果有此配置就无…

GDB之常见缩写命令(十九)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

基于安卓Java试题库在线考试系统uniapp 微信小程序

本文首先分析了题库app应用程序的需求&#xff0c;从系统开发环境、系统目标、设计流程、功能设计等几个方面对系统进行了系统设计。开发出本题库app&#xff0c;主要实现了学生、教师、测试卷、试题、考试等。总体设计主要包括系统功能设计、该系统里充分综合应用Mysql数据库、…

5.4双积分ADC工作原理

文章目录 1、高中几个知识点exp(n)log(n)lgx、lnx电容充放电公式 2、双积分型ADC工作原理3、SAR和∑-Δ型模数转换器(ADC) 1、高中几个知识点 exp(n) exp函数即指数函数&#xff1a;e的n次方的函数&#xff0c;自然常数e2.718281828459045 举例&#xff1a; exp(0) e 0 e^{…

MQ 异步削峰解耦 交换机与队列

MQ全称 Message Queue&#xff08;消息队列&#xff09;&#xff0c;是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信&#xff0c;解耦 作用&#xff08;这是个面试题&#xff09; 1、异步处理 场景说明&#xff1a;用户注册后&#xff0c;需要发注册邮件…

高压放大器在mems传感器中的应用有哪些

高压放大器在MEMS传感器中具有广泛的应用。MEMS传感器是一种能够将微小机械运动转化为电信号的微型传感器&#xff0c;其应用涵盖了多个领域&#xff0c;包括汽车、医疗、消费电子等。而高压放大器则是用于增强MEMS传感器输出信号的设备&#xff0c;可以提供更高的增益和更低的…

二、链表(linked-list)

文章目录 一、定义二、经典例题&#xff08;一&#xff09;[21.合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/description/)1.思路2.复杂度分析3.注意4.代码 &#xff08;二&#xff09;[86.分割链表](https://leetcode.cn/problems/partition-list…

批量BMP图片转为PNG透明图片,去掉BMP黑色背景,压缩导出png图片V1.1

前段时间上传了一款bmp转png并去黑底的demo软件&#xff0c;非常受欢迎&#xff0c; 旧版软件介绍文章&#xff1a;批量BMP图片转为PNG透明图片&#xff0c;去掉BMP黑色背景 应广大爱好者的要求&#xff0c;完善了一下软件的功能&#xff0c;增加了导出png图片压缩功能&#x…

本地部署CodeLlama +GTX1080显卡 对接open-interpreter对接wxbot(一)

1.效果展示 开源项目GitHub - oobabooga/text-generation-webui: A Gradio web UI for Large Language Models. Supports transformers, GPTQ, llama.cpp (GGUF), Llama models. "Code Llama" 是一个大型代码语言模型的系列,基于 "Llama 2" 构建,为编程…