在C中创建我自己的strcmp()函数

Sha*_*ist 1 c strcmp

我的老师指派我strcmp()在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 );
}
Run Code Online (Sandbox Code Playgroud)

StringOneIsLesser,StringOneIsGreater,StringsAreEqual被定义为const int,其值分别为:-1,+ 1,0.

事实上,我不确定,例如,我的StringOne的长度是否比StringTwo长,这自动意味着StringTwo更大,因为我不知道如何strcmp()特别实现.我需要你的一些反馈意见.

Hav*_*ard 6

这么简单的任务就这么多.我相信这样做很简单:

int my_strcmp(char *a, char *b)
{
    while (*a && *b && *a == *b) { ++a; ++b; }
    return (unsigned char)(*a) - (unsigned char)(*b);
}
Run Code Online (Sandbox Code Playgroud)