【C语言基础/入门库函数编写】字符串库函数的编写和实现3-自己编写函数实现strcmp()函数功能

C语言实现字符串操作函数

在编写程序的过程中,我们经常会使用到一些字符串函数,比如求字符串长度、判断字符串相等等等,这额函数都在C语言标准库中存在,我们可以直接使用。但我们还需要掌握这些函数的编写过程和实现方法,今天我们一起回顾一些字符串操作函数的实现方法。第三个是strcmp

strcmp

strcmp(字符串1,字符串2)

作用:比较字符串1和字符串2。两个字符串从左至右逐个字符比较(按照字符的ASCII码值的大小)(即减法比较),直到字符不同或者遇见’\0’为止。

如果全部字符都相同,则返回值为0。

如果不相同,则返回两个字符串中第一个不相同的字符的ASCII码值的差,即字符串1大于字符串2时函数值为正,否则为负。

编写实现的思路:首先判断参数入参有效性,因为函数返回类型是int,所以即使参数错误返回也应该为int类型。

循环的判断条件为(*str1!='\0')&&(*str1==*str2),实际上当str1或者str2为结束符'\0'或者str1和str2不再相等时,则退出循环。

换种理解方式就是,当当前判断的字符不为'\0',并且相等两字符串当前的字符相等,则*str++后执行下一次判断,一旦不相等则进行比较大小。剩下的if就比较简单了,主要还是循环的判断条件要写对。

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

int my_strcmp(char str1[], char str2[])
{
    int nNum1, nNum2;
    int value;
    nNum1 = strlen(str1);
    nNum2 = strlen(str2);
    if (nNum1 == nNum2)
    {
        for (int i = 0; i < nNum2; i++)
        {
            value = str1[i] - str2[i];
            if (value == 0)
            {
                return 0;
            }
            else if (value > 0)
            {
                return 1;
            }
            else
            {
                return -1;
            }
        }
    }
    else if (nNum1 > nNum2)
    {
        return 1;
    }
    return -1;
}

int main()
{
    int nNum1, nNum2;
    char strAry1[30] = "I like beijing";
    char strAry2[30] = "I like beijingm";

    nNum1 = my_strcmp(strAry1, strAry2);
    nNum2 = strcmp(strAry1, strAry2);

    system("pause");
    return 0;
}

 上述代码的返回值并非返回两个字符串中第一个不相同的字符的ASCII码值的差,即字符串1大于字符串2时函数值为正,否则为负。而只是简单地+1、-1和0。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值