的C/C++ STRNCMP签名是这样的:C/C++是什么STRNCMP的返回值时的大小为0
int strncmp (const char * str1, const char * str2, size_t num);
我的问题是什么是返回值,如果num为0?标准如何说?不要从一些在线文档中找到答案。
谢谢。
的C/C++ STRNCMP签名是这样的:C/C++是什么STRNCMP的返回值时的大小为0
int strncmp (const char * str1, const char * str2, size_t num);
我的问题是什么是返回值,如果num为0?标准如何说?不要从一些在线文档中找到答案。
谢谢。
好,strncmp
比较从两个字符串最num
字符,所以用num == 0
,就比较没有,因此认为没有什么区别,所以返回0
但这没有任何意义。返回0意味着两个字符串是相同的。实际上没有。如果这是标准说的话,那么我认为这是标准中的一个错误。我想,无论返回0还是1,这都不是一个合理的值。 –
@nowgainsnowpains:包含零个字符的字符串与另一个包含零个字符的字符串相同。 –
@nowgainsnowpains尽管从'strcmp'返回0意味着这些字符串是相等的,但这不适用于'strncmp'。对于那个函数,返回0意味着第一个'n'字符的子字符串是相等的。为'n'传递零有效意味着比较两个确实相等的空字符串。 – dasblinkenlight
按道理它应该是0,因为没有办法对一个的琴弦比另一个更大或更小。 –
你可以随时[尝试看看](http://ideone.com/4e4frw)。 – ellotheth