将 getchar 与字符 returns 进行比较会发出警告并给出错误的代码

comparing getchar with a character returns a warning and gives me the wrong code

我在使用 getchar() 和文件重定向进行比较时遇到问题。

我有一个类似这样的代码:

char result = getchar(); // getchar returns the next char in the file
int linecount = 0;

if (result == "\n") {
    linecount++;
}

但是我在编译的时候得到了一个警告。它说我不能将 int 与指针进行比较,但根据我的理解,结果是 char,“\n”也是,所以我真的很困惑。我也可以使用 printf("%c", result") 并且它工作正常,暗示结果是一个字符。有谁知道我为什么会收到这个错误?谢谢!另外,运行 代码,linecount将始终 return 0 即使我用作输入的文件中的第一个字符是换行符。

您正在比较 charchar *,即字符串。 ""(双引号)值在 C 中被视为字符串,因此您的代码应该是

if (result == '\n') {
    linecount++;
}

或者,您可以使用 strcmpstrncmp 并将字符转换为指针,但这不是必需的。

请注意,char 的大小小于 int,因此从 char 到 int 的转换不会让您丢失任何东西。