2013-06-22 130 views
-1

为什么下面的代码不能一次打印一个文件中的字符?为什么我的循环不工作?

FILE *fp; 
int c; 

fp = fopen("/tmp/input_file", "r"); 

while(c = getc(fp) != EOF) { 
     printf("%c", c); 
} 
+6

检查''在()你'while'的位置。学习使用调试器来查看发生的事情并检查变量是一项您应该尽早掌握的有用技能。 –

回答

6

使用周围的括号您c赋值语句为!=操作的优先级高于=操作:

while((c = getc(fp)) != EOF) { 
+3

那么,只要给出答案,您就可以在这里拿走学习机会。尼斯。 –

+1

@Ken White:根据“关于”页面,“这个网站是关于获得答案”... –

+0

@PaulGriffiths:这个网站也是为程序员提供教育,并为未来的用户提供参考。这不是(也不是)“这是我的家庭作业,写我的代码给我,谢谢。”类型问题和提供代码鼓励其他类型的问题。如果这里的每个人都只是为了代表争取低悬的成果,那么这个网站会恶化为完成作业的代码写作服务。我的评论现在拥有比此答案更多的投票。我对网站的目标非常熟悉。不过,感谢您的反馈。 –