4
strcasecmp算法有缺陷吗?
我试图strcasecmp在C中重新实现该功能,并且发现比较过程中似乎存在不一致之处。 从 man strcmp strcmp()函数比较两个字符串s1和s2。不考虑语言环境(有关语言环境的比较,请参阅strcoll(3))。如果分别找到s1小于,匹配或大于s2,则它返回小于,等于或大于零的整数。 从 man strcasecmp strcasecmp()函数对字符串s1和s2进行逐字节比较,而忽略字符的大小写。如果分别找到s1小于,匹配或大于s2,则它返回小于,等于或大于零的整数。 int strcmp(const char *s1, const char *s2); int strcasecmp(const char *s1, const char *s2); 鉴于此信息,我不理解以下代码的结果: #include <stdio.h> #include <string.h> int main() { // ASCII values // 'A' = 65 // '_' = 95 // 'a' = 97 printf("%i\n", strcmp("A", "_")); printf("%i\n", …