strcmp函数(模拟实现)

strcmp函数比较的不是字符串的长度,strcmp比较的是对应位置上字符的大小(ASCII值),如果不相同就比较下一对,直到源字符串没有元素为止,如果源字符串上的字符比目的字符串的字符大就返回大于零的数,如果比较小,就返回小于0的数,如果相同就返回0。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<assert.h>
int my_strcmp(const char* s1, const char* s2) {
    assert(s1 && s2);
    while (*s1 == *s2) {
        if (*s1 == '\0') {
            return 0;//相等
        }
        s1++;
        s2++;
    }
    //不相等
    return *s1 - *s2;
}
int main() {
    char arr1[] = "abcd";
    char arr2[] = "abcde";
    //strcmp函数不是比较字符串的长度
    //而是比较字符串中对应位置上的字符的大小,如果相同就比较下一个,直到最后一个元素
    int ret = my_strcmp(arr1, arr2);
    if (ret > 0) {
        printf("> \n");
    }
    else if (ret == 0) {
        printf("== \n");
    }
    else {
        printf("> \n");
    }
    printf("%d\n",ret);
    return 0;
}

1.模拟实现strcmp函数 在vis中默认的strcmp函数如果大于则返回1,小于则返回-1,等于则返回0。

2.所以我们可以在主函数中使用if判断一下.调用使用my_strcmp函数,首先不需要改变我们的*s1和*s2所以可以增加const修饰,然后进行断言指针不为空。 当我们的*s1和*s2相同的情况下,两个数就++一直判断后面的情况,如果不同的话直接返回*s1-*s2就相当于对*s1中和*s2中的不同的那个字符解应用.直接相减,如果大于则返回大于的函数,如果小于则返回小于的函数.

3.当我们的函数一直保持在相同时,我们的*s2会一直走到\0这个位置,此时我们只要判断*s1为\0就可以得出想要的结果了.

!!!!!!!!

strcpy

strcat

strcmp

以上三个都为长度不受限制的字符串函数,这三个函数只管进行,不管内容;让他做就直接开干,不管溢不溢出,不管越不越界.只要快就完事了.

接下来 认识一下

strncpy

strncat

stcncmp

以上三个为长度受限制的字符串函数~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值