小编Hal*_*rys的帖子

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", strcmp("a", "_"));
    printf("%i\n", strcasecmp("A", "_"));
    printf("%i\n", strcasecmp("a", "_"));
    return 0;
} …
Run Code Online (Sandbox Code Playgroud)

c strcmp

34
推荐指数
3
解决办法
2047
查看次数

标签 统计

c ×1

strcmp ×1