我有以下一段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 }
Run Code Online (Sandbox Code Playgroud)
小智 6
尝试
while ((c = getchar()) != EOF)
Run Code Online (Sandbox Code Playgroud)
否则,您比较的结果(c != getchar())来EOF.
while ((c != getchar()) != EOF)
Run Code Online (Sandbox Code Playgroud)
这会将不等式的int变量c(您尚未初始化)的值与返回的值进行比较.该比较产生0或1,其不等于,这是负的.getchar()EOF
您想要!=通过=(赋值)替换(不等式比较).