我想知道深奥的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上显示的实现被破坏了?
答案 0 :(得分:1)
没有预期的行为; strincmp
不是标准C ++的一部分(尽管strncmp
是:http://en.cppreference.com/w/cpp/header/cstring)。
你可能想问一下C,虽然我怀疑它在那里没有标准化。
答案 1 :(得分:-2)