我有以下一段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 }
答案 0 :(得分:6)
尝试
while ((c = getchar()) != EOF)
否则,您要将(c != getchar())
的结果与EOF
进行比较。
答案 1 :(得分:5)
while ((c != getchar()) != EOF)
这会将不等式的int
变量c
(您尚未初始化)的值与getchar()
返回的值进行比较。这种比较产生0或1,它不能等于EOF
,这是负的。
您想要!=
(分配)替换=
(不等式比较)。
答案 2 :(得分:3)
while ((c != getchar()) != EOF)
应该是
while ((c = getchar()) != EOF)