2013-06-22 165 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:這個網站也是爲程序員提供教育,併爲未來的用戶提供參考。這不是(也不是)「這是我的家庭作業,寫我的代碼給我,謝謝。」類型問題和提供代碼鼓勵其他類型的問題。如果這裏的每個人都只是爲了代表爭取低懸的成果,那麼這個網站會惡化爲完成作業的代碼寫作服務。我的評論現在擁有比此答案更多的投票。我對網站的目標非常熟悉。不過,感謝您的反饋。 –