strncmp的实现和模拟

1. 函数的调用形式

int strncmp(char *str1, char *str2, int maxlen);

2.功能
比较字符串str1和str2的前maxlen个字符。
3.实现

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    char *s1 = "abcd";
    char *s2 = "abcc";
    printf("%d\n", strncmp(s1, s2, 4));
    system("pause");
    return 0;
}

这里写图片描述
4.模拟实现

#include<stdio.h>
#include<string.h>
#include<assert.h>
int my_strncmp(const char *str1, const char *str2, int maxlen)
{
    assert(str1 != NULL);
    assert(str2 != NULL);
    int ret = 0;
    while (!(ret = (*str1 - *str2)) && *str1 && (maxlen--))//如果两者相等且不为'\0',并且只能比较字符串str1和str2的前maxlen个字符
    {
        str1++;
        str2++;
    }
    if (ret < 0)
        ret = -1;
    else if (ret>0)
        ret = 1;
    return ret;
}
int main()
{
    char *s1 = "abcd";
    char *s2 = "abcc";
    printf("%d\n", my_strncmp(s1, s2, 4));
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_40995778/article/details/80443979
今日推荐