1

我有以下一段 c 代码。当我按CTRL+D时,程序无法将其识别为 EOF。

几点注意事项:

我在 VMware 播放器上运行 Ubuntu 11.10 使用 gcc 并从命令行运行程序 'stty -a' 显示 eof = ^D

谢谢你的帮助..

1 #include <stdio.h>
  2 
  3 int main()
  4 {
  5    int c, nl;
  6    nl = 0;
  7    while ((c != getchar()) != EOF)
  8    {
  9       if (c == '\n')
 10          ++nl;
 11    }
 12    printf("line: %d\n", nl);
 13 
 14    return 0;
 15 }
4

3 回答 3

6

尝试

 while ((c = getchar()) != EOF)

否则,您正在比较(c != getchar())to的结果EOF

于 2012-04-07T02:01:37.910 回答
5
while ((c != getchar()) != EOF)

这会将不等式int的变量值c(您尚未初始化)与返回的值进行比较。此比较产生 0 或 1,不能等于,这是负数。getchar()EOF

您想用(赋值)替换!=(不等式比较)。=

于 2012-04-07T02:01:52.153 回答
3

while ((c != getchar()) != EOF)

应该

while ((c = getchar()) != EOF)

于 2012-04-07T02:01:44.807 回答