C语言实现模拟 strcmp 字符串比较函数,实现字符串大小的比较

完整代码:

复制代码
// 模拟 strcmp 字符串比较函数,实现字符串大小的比较
#include<stdio.h>
//strcmp函数是两个字符串自左向右逐个字符相比(按 ASCII 值大小相比较),直到出现不同的字符或遇 \0 为止,如果字符全部相等,就比较字符串长度,字符串长度也相等时,两个字符串相等
#include<string.h>
//传入两个指向要比较字符串的地址的指针
int my_strcmp(const char *str1,const char *str2){
    //从左到右,用数组的方式得到字符串中的字符
    int i=0;
    //两个字符串自左向右逐个字符相比直到出现遇到\0 
    while (str1[i]!='\0'&&str2[i]!='\0')
    {
        //字符相等时,比较下一个字符
        if (str1[i]==str2[i])
        {
            i++;
            //直接跳出这次循环,不用执行后续代码
            continue;
        }
        else if (str1[i]>str2[i])
        {
            //1代表大于
            return 1;
        }
        else if (str1[i]<str2[i])
        {
            //-1代表小于
            return -1;
        }
    }
    //当两个字符串最后一个字符同时为\0时,此时说明前面字符全部相等,并且两个字符串长度也相等
    if (str1[i]=='\0'&&str2[i]=='\0')
    {
        //0代表相等
        return 0;
    }
    //当某个字符串先出现\0,另外一个字符串不是\0,说明这个字符串的长度小于另外一个字符串,则这个字符串更小
    if (str1[i]=='\0')
    {
        return -1;
    }
    if (str2[i]=='\0')
    {
        return 1;
    }
}
int main()
{
    char str1[]="abc";
    char str2[]="bbc";
    printf("%d\n",my_strcmp(str1,str2));
    printf("%d\n",strcmp(str1,str2));
    return 0;
}

运行截图:

相关推荐
BUG收容所所长6 分钟前
二分查找的「左右为难」:如何优雅地找到数组中元素的首尾位置
前端·javascript·算法
itsuifengerxing43 分钟前
python 自定义无符号右移
算法
猎板PCB厚铜专家大族1 小时前
高频 PCB 技术发展趋势与应用解析
人工智能·算法·设计规范
dying_man1 小时前
LeetCode--24.两两交换链表中的结点
算法·leetcode
yours_Gabriel1 小时前
【力扣】2434.使用机器人打印字典序最小的字符串
算法·leetcode·贪心算法
草莓熊Lotso2 小时前
【数据结构初阶】--算法复杂度的深度解析
c语言·开发语言·数据结构·经验分享·笔记·其他·算法
KyollBM2 小时前
【CF】Day75——CF (Div. 2) B (数学 + 贪心) + CF 882 (Div. 2) C (01Trie | 区间最大异或和)
c语言·c++·算法
CV点灯大师2 小时前
C++算法训练营 Day10 栈与队列(1)
c++·redis·算法
GGBondlctrl3 小时前
【leetcode】递归,回溯思想 + 巧妙解法-解决“N皇后”,以及“解数独”题目
算法·leetcode·n皇后·有效的数独·解数独·映射思想·数学思想
武子康3 小时前
大数据-276 Spark MLib - 基础介绍 机器学习算法 Bagging和Boosting区别 GBDT梯度提升树
大数据·人工智能·算法·机器学习·语言模型·spark-ml·boosting