即使两个值相同,strcmp()如何返回-1?

Bhu*_*ant 2 c

当我将输入设为'x'时,compVal将值设为-1.我期待0,因为两个值都相同.请有人解释原因.

char ch = getchar();
int compVal = strcmp("x", &ch);
Run Code Online (Sandbox Code Playgroud)

cor*_*ump 8

你必须给strcmp两个字符串.字符串是char最后一个值为的数组\0.

在您的示例中,您传递的第二个值只是a的地址,char并且没有字符串终止符,因此函数会盲目前进,直到找到0(与之相同\0).

您应该使用strcmp一个char矢量char ch[2](对于您想要的字符有一个值,另一个用于\0我之前提到的,或者在您的情况下,您应该只使用==运算符,因为您只想比较一个字符.