【发布时间】:2016-02-08 06:10:45
【问题描述】:
我有一个自己的 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]
【问题讨论】:
-
你认为索引 1 到 19 是什么?