strincmp的预期行为是什么?

时间:2015-08-01 06:58:27

标签: c++ c standards

我想知道深奥的strincmp()的泛型实现的行为。例如,BSD的实现:ftp://ftp.stu.edu.tw/BSD/FreeBSD/releases/i386/1.0-RELEASE/ports/elm/lib/strincmp.c

printf( "%i\n", strcmp("cd", "cd") );
printf( "%i\n", stricmp("cd", "CD") );
printf( "%i\n", strincmp("cdefg", "CD", 2) );
printf( "%i\n", strincmp("cd", "CDe", 2) );
printf( "%i\n", strncmp("cd", "cde", 2) );
printf( "%i\n", strincmp("cd", "cde", 2) );

测试这段代码会得到以下输出:

0
0
101
-101
0
-101

因此,根据最后两个结果,strncmp()和strincmp()不会为同一组字符串提供相同的结果。这是预期的行为,还是URL上显示的实现被破坏了?

2 个答案:

答案 0 :(得分:1)

没有预期的行为; strincmp不是标准C ++的一部分(尽管strncmp是:http://en.cppreference.com/w/cpp/header/cstring)。

你可能想问一下C,虽然我怀疑它在那里没有标准化。

答案 1 :(得分:-2)

strncmp()比较两个字符串的字符,而strcmp()比较两个字符串。有关详细信息,请参阅herehere