我在使用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即使我用作输入的文件中的第一个字符是换行符。
答案 0 :(得分:0)
您正在将char
与char *
进行比较,即字符串。 "" (双引号)值在C中被视为字符串,因此您的代码应为
if (result == '\n') {
linecount++;
}
或者,你可以使用strcmp
或strncmp
将char添加到指针中,但这不是必需的。
请注意,char的大小小于int,因此从char到int的转换不会使您丢失任何内容。