2017-02-16 18 views
1

我有使用getchar()和文件重定向比较问题。比较getchar与一个字符返回一个警告,并给我错误的代码

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

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

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

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

+3

'“\ n”' - >''\ n''。期。 –

+2

呵呵,还有'char result' - >'int result' –

+1

确实'getchar'返回'int',你分配给'char',然后和'char *'比较。 –

回答

0

您正在比较charchar *,即字符串。“”(双引号)值被视为C中的字符串,所以你的代码应该是

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

或者,你可以使用strcmpstrncmp与浇铸为指针的字符,但是这是没有必要的。

请注意char的大小小于int,所以从char到int的转换不会让你失去任何东西。

+1

_或者,您可以使用strcmp或strncmp将char转换为pointer_,而不是真的,NUL终止符在哪里? –

+0

好的,非常感谢!我从来不知道“”和“之间的区别,所以这非常有帮助! – Keeyan

相关问题