C中的词典顺序

时间:2016-05-22 10:54:51

标签: c string comparison lexicographic

我正在研究C中的字符串,我想问一下究竟什么是Lexicographic Order以及如何在C中使用。这是比较2个字符串的最佳方法。我读过关于strcmp和它的词典比较,但我很困惑。

2 个答案:

答案 0 :(得分:2)

strcmp使用词典顺序来比较字符串。也就是说,它遵循字母表。在英语中,F直接在G之前,Z直接在Y之后。strcmp考虑到这一点,因为ASCII表中的字符按字母顺序成功。典型的strcmp函数将是

int strcmp(const char *a, const char *b)
{
    for (; *a && *b && *a == *b; ++a, ++b)
        ;

    return *b - *a;
}

它遍历字符,而\0未被看到,当前字符相等。一旦角色变得不相等或看到\0,循环就会被破坏,并且return表达式会被评估。如果看到\0,则两个字符都相同,\0 - \0必须为0.

答案 1 :(得分:0)

词典顺序是词典定义的顺序,或人们沟通方式定义的顺序。我们讲英语的人都认为,在我们的词典中,Apple这个词出现在Cat之前,我们称之为“字母顺序”。在您的情况下,使用strcmp,它将是ASCII图表定义的顺序,只要您使用一致的大小写,它也可以按字母顺序排列。 'A'小于'B',因为'A'出现在ASCII图表中的'B'之前。