【发布时间】:2014-03-15 23:19:30
【问题描述】:
我不相信strcmp()的定义,它说它将比较整个字符串(作为参数传入的两个字符串,并根据s1<s2返回-1、0、1, s1(同)s2,s1>s2。
如果是这样,你如何在 K&R 的 sn-p 下证明,在第一次遇到不相等的字符后,你退出循环。我们如何比较 s1 和 s2 的所有字符直到结束 ('\0')?
char *p1 = &str1[0], *p2 = &str2[0];
while (1) {
if (*p1 != *p2)
return *p1 - *p2;
if (*p1 == '\0' || *p2 == '\0')
return 0;
p1++;
p2++;
}
【问题讨论】:
-
你的描述是从哪里来的?发现差异后,没有必要、没有意义或目的继续比较。
-
@Jongware,我的理解是 str1 = "Aasdasdasd" 大于 str2 = "a",根据 strcmp() 是不正确的,所以我们只是丢弃 Str1 的其他字符?是对的吗?为什么不计算其他字符的 ASCII 值作为最终总和,然后决定谁更大。
-
因为这不是它的作用.. 如果你想要一个将所有字符 ASCII 值相加的函数,然后创建一个并将其命名为 davids_strtotalsumcmp() 之类的。