C中的strcasecmp返回156而不是0,任何想法为什么?

hor*_*ora 2 c string strcmp

我有以下代码:

printf("num: %d\n", strcasecmp(buf, "h\n"));
Run Code Online (Sandbox Code Playgroud)

当我尝试插入不同的字母时,我得到以下结果:

a: -7
g: -1
i: 1
j: 2
h: 156
H: 156
Run Code Online (Sandbox Code Playgroud)

strcasecmp当buf等于H或时,不应该返回0 h?任何想法为什么它返回156?我需要弄清楚如何检查用户是否输入Hh.

谢谢!

编辑:我正在以下列方式阅读buf: read(0, buf, MAXBUFLEN);

N 1*_*1.1 5

printf("num: %d\n", strcasecmp(buf, "h"));
Run Code Online (Sandbox Code Playgroud)

为什么\n在最后,如果你想与h或比较H


main(){
 char *s = "hH";
 printf("%d\n", strcasecmp(s, "Hh"));
}
Run Code Online (Sandbox Code Playgroud)

0


read()还存储空白.所以,如果您正在使用read,请与"h \n"进行比较.

main(){
 char *buf = malloc(sizeof(char)*10);
 read(0, buf, 10);
 printf("%s %d %d\n", buf, strcasecmp(buf, "h\n"), strcasecmp(buf, "h"));
}
Run Code Online (Sandbox Code Playgroud)

ħ
ħ
  0 10

我进入h上述案件.

此外,strncasecmp如果要比较固定数量的字符,请使用.