gpt4 book ai didi

c - 如果输入长度不同,如何计算函数 strcmp() 中的比较?

转载 作者:太空宇宙 更新时间:2023-11-04 00:16:04 24 4
gpt4 key购买 nike

我正在创建一个以等级为条件的排序程序,想知道 strcmp() 如何比较 2 个不同长度的字符串。例如,如果其中一个是“A”,另一个是“AB”,为什么“A”是否小于“AB”,但如果第一个字符串是“B”,则第二个字符串(即“AB”)小于“B”。我如何知道每个字符串的值以及如何计算它?

最佳答案

strcmp 在第一个差异处停止。

因为"A"实际上是两个字符('A'和0),与"AB"比较时,第一个区别在于第二个字符,0 小于 'B' 在您的编码1 中,因此 "A" 是较小的.

比较 "B""AB" 时,第一个区别是第一个字符,"AB" 更小.

这一切都很好,因为字符串的排序就像它们在字典中一样。


1 C 在这方面拉得很快。虽然 'B' 是一个 int 并且可能是负数,并且 strcmp 采用 const char *,但 7.24.4 1 偷偷地在:“比较函数 memcmp、strcmp 和 strncmp 返回的非零值的符号由符号确定在被比较的对象中不同的第一对字符(都被解释为 unsigned char)的值之间的差异。”所以它不仅仅是 OP 的编码——在任何编码中,差异 (unsigned char) '\0' - (unsigned char) 'B' 都是负数。除了在 sizeof(int) == 1 的理论实现中。确认 Eric Postpischil .

关于c - 如果输入长度不同,如何计算函数 strcmp() 中的比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54633356/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com