首页 > 其他分享 >模拟实现 strcmp(字符串比较) --浅谈C语言

模拟实现 strcmp(字符串比较) --浅谈C语言

时间:2024-08-05 13:06:01浏览次数:8  
标签:const 浅谈 -- str2 str1 ret C语言 char strcmp

C 库函数 - strcmp()

描述

C 库函数 int strcmp(const char *str1, const char *str2)str1 所指向的字符串和 str2 所指向的字符串进行比较。

声明

下面是 strcmp() 函数的声明。

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

参数

  • str1 -- 要进行比较的第一个字符串。
  • str2 -- 要进行比较的第二个字符串。

返回值

该函数返回值如下:

  • 如果返回值小于 0,则表示 str1 小于 str2。
  • 如果返回值大于 0,则表示 str1 大于 str2。
  • 如果返回值等于 0,则表示 str1 等于 str2。

模拟实现

比较方式,依次比较ascii大小,大返回正数,小于返回负数,等于则比较下一位。若全都相等则返回0;

1.0

my_strcmp 1.0 版本

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

int my_strcmp(const char*str1, const char*str2)
{
    assert(str1&&str2);
    //依次比较ascii大小
    while (*str1 == *str2)
    {
    		//相等且都为'\0'
        if (str1 == '\0')
        {
            return 0;
        }
        str1++;
        str2++;
    }
    return(*str1 - *str2);
}

int main()  
{
    char* str1 = "aaaa";
    char* str2 = "bbbb";
    int ret = my_strcmp(str1, str2);
    printf("%d\n", ret);
    return 0;
}

2.0

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

int my_strcmp (const char * src, const char * dst)
{
        int ret = 0 ; 
        assert(src != NULL);
        assert(dest != NULL);
        //以字符类型(以字节为单位)进行整型计算
        while( *dst && *src && !(ret = *(unsigned char *)src - *(unsigned char *)dst) )
                ++src, ++dst;
                
        if ( ret < 0 )
                ret = -1 ;
        else if ( ret > 0 )
                ret = 1 ;

        return( ret );
}

标签:const,浅谈,--,str2,str1,ret,C语言,char,strcmp
From: https://www.cnblogs.com/DSCL-ing/p/18342326

相关文章

  • 正则表达式
    正则表达式一.字符通配符字符通配符是一种在多种编程语言和工具中广泛使用的特殊字符或字符序列,它们用于匹配或比较字符串时表示一组字符的模式。字符通配符可以实现模糊匹配,使得字符串处理更加灵活和高效。在Java中,字符通配符的使用主要体现在以下几个方面:1.正则表达式中的通......
  • 多坐席智能分配的客服系统(附使用教程)
    ​轮流分配就像是排班表,每个客服都有机会接待客户,这样大家都不会太忙也不会太闲,公平得很。按空闲度分配呢,就是看谁现在手头上的活少,就先让谁接待新客户,这样客户就不用等太久,效率杠杠的。熟客分配,这个好理解,就像老朋友来了,直接找上次聊得来的客服继续聊,这样大家都熟悉,沟通起来也......
  • 抽象代数精解【8】
    文章目录希尔密码矩阵矩阵基本概念行列式基本概念特殊矩阵关于乘法运算构成群加解密原理密钥加密函数解密函数Z26......
  • ssm+vue高校疫情防控系统的设计与实现【开题+程序+论文】-计算机毕业设计
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着全球新冠疫情的持续影响,高等教育机构作为人员密集、流动性大的场所,其疫情防控工作显得尤为重要。传统的疫情管理模式往往依赖于人工统计、纸质报......
  • ssm+vue高校社团管理系统【开题+程序+论文】-计算机毕业设计
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着高等教育的普及与深化,高校社团作为学生自我管理与发展的重要平台,日益成为校园文化不可或缺的一部分。然而,传统的高校社团管理方式往往依赖于纸质......
  • ssm+vue高校本科成绩管理系统设计【开题+程序+论文】-计算机毕业设计
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着高校教育规模的不断扩大和信息化技术的飞速发展,传统的手工或简单电子化管理方式已难以满足高校本科成绩管理的复杂需求。当前,高校本科生成绩管理......
  • 测绘项目质量一体化控制流程细则(可实施性强)
    1、工作职责分配表 工作职责分配表工作事项质量负责人技术负责人项目负责人外业人员内业人员仪器设备资料技术设计书√技术交底文件√技术总结√外业成果核查√内业成果核查√合同相关事项√原始资料收集情况√纠正预防措施表√√√施工日志√工程量确认单√现行体系有效文件......
  • 免费【2024】springboot 大学校园旧物捐赠网站的设计与实现
    博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数......
  • ssm+vue骨科医院信息管理系统设计实现【开题+程序+论文】-计算机毕业设计
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着医疗技术的飞速发展和患者需求的日益增长,传统骨科医院的管理模式面临着诸多挑战。信息不对称、流程繁琐、效率低下等问题日益凸显,不仅影响了患者......
  • python_wholeweek3
    目录子函数的使用函数的定义嵌套的使用全局定义和局部定义子函数的使用函数的定义##############函数的三种定义方式##比较两个数大小,max是内置关键字,##第一种定义方式,无参函数#defself_max():#x,y=10,20##ifx>y:#print(x)#el......