【发布时间】:2010-04-19 17:00:47
【问题描述】:
在 C 中,我有一个字符数组:
d[20]
它被赋值为 'if' 并带有一个空终止字符:
d[0]='i'
d[1]='f'
d[2]='\0'
strcmp(d,"if") 的值应该为 0 吗?为什么?
我希望strcmp 返回值 0。当我运行它时,我得到的值是 -1
【问题讨论】:
-
因在标准库函数中假设错误而被否决。始终假设您的代码有问题,而不是库。并发布代码。
-
@mekasperasky:当您认为您在编译器或标准库中发现错误时,您可以这样做:1) 将问题归结为 20 行代码的可编译程序来重现问题. 2)您将该示例发布在一个可以粘贴到编辑器中、编译和测试的示例中。 3)您使用用于重现问题的编译器/标准库版本伴随程序。 - IME 第 1 步将在 98% 的情况下显示 your 错误。在第 2 步引起的 1.98% 的批评中也会发现 your 错误。将剩余的 0.2% 报告给供应商,使用您的再现程序作为证据。
-
@sbi,你认为它高达0.2%?当我以前在 comp.lang.c 中闲逛时,我会说它更像是 0.0001%。
-
@Michael Burr:mekasperasky 在评论中说“/0”是一个错字,这让我不知道发生了什么。如果没有真实的代码示例和运行报告,这个问题就无法回答,我没有看到。
-
@David Thornley:我明白了 - 这是一个令人困惑的情况。我们将看看 mekasperasky 是否澄清(希望从实际代码中复制粘贴)。