【发布时间】:2009-10-11 21:07:51
【问题描述】:
我正在尝试做 K&R C 书中的练习 5-4。我已经编写了 strncpy 和 strncat 的方法,但是我在理解练习的 strncmp 部分要返回什么时遇到了一些麻烦。
strncmp的定义(来自K&R书的附录B)是:
将字符串s的最多n个字符与字符串t进行比较;如果 s
,则返回 >0t
假设我有 3 个字符串:
char s[128] = "abc"
char t[128] = "abcdefghijk"
char u[128] = "hello"
我想使用我必须编写的 strncmp 函数来比较它们。我知道
strncmp(s, t, 3)
将返回 0,因为 abc == abc。我感到困惑的是其他比较。例如
strncmp(s, t, 5) and
strncmp(s, u, 4)
第一个匹配第三个位置,然后它们不再匹配,第二个示例根本不匹配。
我真的只是想知道其他 2 个比较返回什么以及为什么这样我就可以编写我的 strncmp 版本并完成练习。
【问题讨论】:
-
有什么原因你不能只写一个程序来调用 strncmp 看看它返回什么?
-
我确实编写了一个程序,但我不明白为什么返回的值是返回的值。知道答案几乎和知道为什么是答案一样重要。我想真正理解这些概念。
-
这不是你的问题所说的:它说“我真的只是想知道其他 2 个比较返回什么”。
-
实际上整句话说的是“我真的只是想知道其他 2 个比较返回什么以及为什么这样我就可以编写我的 strncmp 版本并完成练习。”你会注意到上面写着“AND WHY”