我有一段時間執行的代碼(fscanf!= EOF)循環。 但是,即使fscanf執行完畢,我仍需要繼續運行該代碼,直到滿足某些條件。 我的意思是我想我可以將代碼複製/粘貼到while(fscanf)循環之外,並且只使用全局變量,但似乎很麻煩。當然有人遇到過這樣的事情,並有一個更清潔的解決方案。如何確定,「while(fscanf!= EOF){blah}」中,如果下一個fscanf要返回EOF?
0
A
回答
5
難道你只是修改while
條件來說明這些附加條件?
while(fscanf(...) != EOF || !(some_other_conditions_met))
1
你不能 - FEOF的()函數只針對文件條件一個讀操作後,終端的測試 - 沒有測試,如果接下來的操作將失敗的方式。您需要更改程序的邏輯,因爲C流I/O不直接支持您要求的內容。
1
您的問題的標題的答案是,它是相當不可能的。想象一下,獲得一個隨機數並決定將要傳遞給fscanf的兩個格式字符串中的哪一個。當你甚至不知道隨機數是什麼時,你是否需要預測fscanf是否會得到eof?
你的問題的答案或多或少是安德烈亞斯布林克寫的。我有一種感覺,你可能需要更多的東西像這雖然:
for (;;)
{
// .....
eofReached = (fscanf(..) == EOF);
// .....
if (eofReached && otherConditionsMet) break;
// .....
}
1
清潔解決方案,避免使用scanf
/fscanf
。它更不容易出錯,一次只讀一整行,而用sscanf
解析行。
從comp.lang.c常見問題:Why does everyone say not to use scanf? What should I use instead?
相關問題
- 1. C fscanf永遠不會返回EOF
- 2. 使用fscanf裝配EOF
- 3. 的fscanf返回(空)
- 4. fscanf()返回負值
- 5. eof()返回什麼?
- 6. 無法通過fscanf循環來達到EOF
- 7. EOF while parsing
- 8. 的fscanf返回值 - Visual C
- 9. 僅在一定條件下插入fscanf
- 10. 對已經「EOF」ed執行peek()是否繼續返回EOF?
- 11. getc()在返回EOF後定義了嗎?
- 12. 我不確定如何正確使用fscanf
- 13. 期待EOF發現,如果
- 14. C fscanf返回錯誤的值
- 15. 關於while(!EOF)的問題
- 16. cin忽略eof字符? !返回-0忽略EOF字符
- 17. C,如何一起使用fgets和fscanf
- 18. 中的fscanf()
- 19. fscanf兩行數據,在一個循環中執行calc,print結果,fscanf下兩行代碼?
- 20. PHP EOF顯示結果只有一個
- 21. 使用的fscanf如果沒有值
- 22. 在java中,當一次讀入一個文件時,如何確定EOF?
- 23. fscanf C - 確定字母代替數字
- 24. 如何在SSIS VBScript中指定EOF?
- 25. fscanf的結果總是0.
- 26. 如何正確讀取文件到EOF
- 27. fscanf fscanf一個數字並將每個數字存儲在數組c中
- 28. WEBrick套接字返回eof? == true
- 29. PHP非eof記錄集返回空值
- 30. 如何忽略fscanf中的空格()
哈哈。天色已晚。 編輯:實際上,有一些代碼我不想在EOF達到時執行。 我想我必須把它分開。 – paIncrease 2010-04-30 09:28:00