老师让我用C编写自己的函数,我确实创建了自己的函数版本,我希望能得到一些反馈。

int CompareTwoStrings ( char *StringOne, char *StringTwo ) {
    // Evaluates if both strings have the same length.
    if  ( strlen ( StringOne ) != strlen ( StringTwo ) ) {
        // Given that the strings have an unequal length, it compares between both
        // lengths.
        if  ( strlen ( StringOne ) < strlen ( StringTwo ) ) {
            return ( StringOneIsLesser );
        }
        if  ( strlen ( StringOne ) > strlen ( StringTwo ) ) {
            return ( StringOneIsGreater );
        }
    }
    int i;
    // Since both strings are equal in length...
    for ( i = 0; i < strlen ( StringOne ); i++ ) {
        // It goes comparing letter per letter.
        if  ( StringOne [ i ] != StringTwo [ i ] ) {
            if  ( StringOne [ i ] < StringTwo [ i ] ) {
                return ( StringOneIsLesser );
            }
            if  ( StringOne [ i ] > StringTwo [ i ] ) {
                return ( StringOneIsGreater );
            }
        }
    }
    // If it ever reaches this part, it means they are equal.
    return ( StringsAreEqual );
}

StringOneIsLesser,StringOneIsGreater,StringsAreEqual被定义为const int,其各自的值为-1,+1,0。
问题是,我不确定我的StringOne是否比StringTwo的长度短,这自动意味着StringTwo更大,因为我不知道如何特别实现strcmp()。我需要你的反馈。

最佳答案

这么简单的任务就这么多了我相信这样简单的事情可以做到:

int my_strcmp(char *a, char *b)
{
    while (*a && *b && *a == *b) { ++a; ++b; }
    return (unsigned char)(*a) - (unsigned char)(*b);
}

关于c - 在C中创建我自己的strcmp()函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22973670/

10-11 21:29