strcmp的实现和模拟

1.strcmp()函数的调用形式

整形变量=strcmp(字符串1,字符串2);

2.功能
从左至右依次比较两个字符串中的对应字符,比较字符ASCII码值的大小。直到比较到不同字符为止,或者比较到其中一个字符串结束为止。根据比较的大小关系,该函数的返回值有3种情况。
这里写图片描述
注:通常会返回1,0,-1,是由于windows系统上的编译器设定的原因

#include<stdio.h>
#include<string.h>
int main()
{
    char *s1 = "abcd";
    char *s2 = "abbb";
    printf("%d\n", strcmp(s1, s2));
    return 0;

3.模拟实现strcmp函数

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
//由于strcmp并不修改它的任何一个参数,所以并不存在溢出字符数组的危险,所以用const修饰
int my_strcmp(char const *s1, char const *s2)
{
    assert(s1 != NULL);
    assert(s2 != NULL);
    int ret = 0;
    while (!(ret = (*s1 - *s2)) && *s1)//如果两者相等且不为'\0'
    {
        s1++;
        s2++;
    }
    if (ret < 0)
        ret = -1;
    else if (ret>0)
        ret = 1;
    return ret;
}
int main()
{
    char *s1 = "abcd";
    char*s2 = "abbb";
    printf("%d ", my_strcmp(s1, s2));
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_40995778/article/details/80330884