我有自己的strcmp版本,代码如下:
int strcmp(char str1[], char str2[])
{
int i = 0;
while ((str1[i] == str2[i]) && (str1[i] != '\0'))
{
i++;
}
if (str1[i] > str2[i])
return 1;
if (str1[i] < str2[i])
return -1;
return 0;
}
我的测试用例是:
char a[20];
char b[20];
b[0] = 'f';
a[0] = 'f';
cout << strcmp(b, a) << endl;
然而,我得到了1的输出,意味着它们彼此不相等。如果我在函数调用中交换a和b的位置,我会得到-1。我不确定为什么当我的字符都是'f'时,我无法获得0的返回值。我觉得这很基础,但不知道为什么我的比较有误。
str1[i] > str2[i]