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

标签 c

当我将输入作为“x”时,compVal 给出的值为 -1。我期待 0,因为两个值相同。请有人解释原因。

char ch = getchar();
int compVal = strcmp("x", &ch);

最佳答案

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

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

您应该将 strcmpchar vector 一起使用,例如 char ch[2](一个值代表您想要的字符,另一个值对于我之前提到的 \0 或者,在您的情况下,您应该只使用 == 运算符,因为您只想比较一个字符。

关于c - 即使两个值相同,strcmp() 如何返回 -1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17134488/

相关文章:

c - 如何将包含多个变量的字符串分配给char数组?

C - 带信号量的多个 fork

c - 函数指针赋值

c - 读取一个文件并写入另一个 C

c - 解释 c 结构

c - Makefile 快板

objective-c - Objective C/C静态方法性能

c++ - 在 Makefile.am 的 _SOURCE 中分配 c 和 cpp 文件

c - 将数字/字符/字符串发送到 void* 函数

c - 在 C linux 中包含字符数组作为其成员的结构