将getchar与一个字符进行比较会返回一个警告并给出错误的代码

时间:2017-02-16 18:10:05

标签: c input getchar

我在使用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“)并且它工作正常,暗示结果是char。有谁知道我为什么会收到此错误?谢谢!另外,运行代码,linecount将始终返回0即使我用作输入的文件中的第一个字符是换行符。

1 个答案:

答案 0 :(得分:0)

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

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

或者,你可以使用strcmpstrncmp将char添加到指针中,但这不是必需的。

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