c/c++的strncmp函数签名如下:
int strncmp ( const char * str1, const char * str2, size_t num );
我的问题是,如果num为0,返回值是什么?标准怎么说?在一些在线文档中没有找到答案。
谢谢。
strncmp
函数比较两个字符串的前num
个字符,当num == 0
时,不会比较任何字符,所以没有发现差异,因此返回0
。
strcmp
函数返回0意味着字符串相等,但这并不适用于strncmp
函数。对于该函数,返回0意味着前n个字符的子字符串相等。将n
参数传递为0有效地比较两个空字符串,它们确实相等。 - Sergey Kalinichenkostrncmp
比较两个字符串的初始部分,并且如果第一个字符串的长度为 num
的前缀等于、大于或小于第二个字符串的长度为 num
的前缀,则返回 0、正值或负值。任何字符串的长度为 0 的前缀都是空字符串,因此所有长度为 0 的前缀都相等。 - Daniel Fischerstrncmp(a, b, n)
逻辑上首先执行的是 strndup(a, n)
和 strndup(b, n)
,然后将结果传递给 strcmp
。 - R.. GitHub STOP HELPING ICE