跳转到内容

C 编程/string.h/strncmp

来自维基教科书,自由的教科书

strncmp() 是一个标准库函数,用于比较两个字符串,最多比较指定长度。该函数在 string.h 中声明,并与以下原型兼容

int strncmp (const char * s1, const char * s2, size_t num);

该函数使用 字典序 比较字符串,但最多检查 num 个字符。如果字符串相等,或者它们的第一个 num 个字符相等,则返回零;否则,如果 s1 小于 s2,则返回一个负整数,如果 s1 大于 s2,则返回一个正整数。一个简单的实现可能如下所示

int strncmp (const char * const s1, const char * const s2, const size_t num)
{
    const unsigned char * const us1 = (const unsigned char *) s1;
    const unsigned char * const us2 = (const unsigned char *) s2;

    for(size_t i = (size_t)0; i < num; ++i)
    {
        if(us1[i] < us2[i])
           return -1;
        else if(us1[i] > us2[i])
           return 1;
        else if(! us1[i]) /* null byte -- end of string */
           return 0;
    }

    return 0;
}

然而,在实践中,实际的实现会进行显著的优化。

[编辑 | 编辑源代码]
华夏公益教科书