老师让我用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/