回答
fread函數fread
返回實際讀取的字節數。因此,如果讀取的字節數少於要讀取的字節數,那麼您可能在文件末尾。
此外feof
函數還會告訴你,如果你在文件的末尾。
要找出該文件的大小,而不實際讀取它:
long Size;
FILE *p;
p = fopen("filename.format","rb");
fseek (p, 0 , SEEK_END);
Size = ftell (p) ;
rewind (p);
在C++中,我通常跳到使用ifstream::seekg
,並給它ios::end
論據位置在文件的結尾。在ANSI-C等效的seekg
是
int fseek (FILE * stream, long int offset, int origin);
在哪裏origin
可以SEEK_SET, SEEK_CUR, SEEK_END
。
嘗試,這將跳轉到該文件的末尾:
fseek(p, 0, SEEK_END);
然後,一旦在文件的結尾,只是用
long int ftell (FILE * stream);
告訴你的程序所在的文件結束。
舉一個例子,下面的代碼將設置size
變量物理尺寸 - 字節 - 該文件,然後跳回文件的開頭:
FILE *p = fopen("filename.format", "rb"); // open binary file fseek(p, 0, SEEK_END); // jump to end of file long int size = ftell(p); // get size of file fseek(p, 0, SEEK_SET); // jump back to beginning of file
根據標準「一個二進制流不需要 有意義地支持fseek調用,其值爲SEEK_END。」那麼這在一般情況下實際上起作用了嗎? – user673679
是的,如果你正在處理一個流(例如,一個linux'文件'設備或'stdin'),沒有明確的方式來告訴它的長度,因爲只要它被問到,它在技術上可以無限期地提供數據爲更多。由於這個問題特別針對文件,這個解決方案(和邁克爾的)一起工作。 – Codesmith
- 1. 二進制「尾巴」文件
- 2. 如何修剪二進制文件的結尾?
- 3. seekg如何查找文件的結尾?
- 4. 在$ PATH中查找二進制文件
- 5. DWARF - 如何在給定的二進制文件中查找函數的序言結束/尾聲開始地址?
- 6. 如何查找剝離的二進制文件中的漏洞?
- 7. 蟒蛇 - 確定字段閱讀二進制文件的結尾
- 8. 在二進制文件中查找模式/在二進制文件中查找匹配(C)
- 9. 如何查找以.rb結尾的所有文件?
- 10. 如何檢索二進制文件的二進制版本號
- 11. 如何讀取二進制文件直到文件結束?
- 12. 二進制文件的結構?
- 13. 如何查找.each()的結尾?
- 14. 如何查找以Watin結尾的ID's
- 15. 如何在二進制圖像中查找連接的組件?
- 16. 如何製作二進制文件?
- 17. STLloader和three.js - 如何檢查文件是二進制文件?
- 18. 如何檢查文件是否是二進制文件?
- 19. Vbscript尋找文件結尾來製作尾部命令腳本
- 20. 二進制文件和寫入結構
- 21. 讀\寫結構化二進制文件
- 22. 閱讀結構化二進制文件
- 23. C++二進制文件讀入結構
- 24. C++結構二進制文件
- 25. 結合Lua二進制文件
- 26. 找不到二進制文件
- 27. 無法找到PHP二進制文件
- 28. hcidump二進制文件沒有找到
- 29. 尋找「des」二進制文件?
- 30. 如何更新二進制文件中的結構項目
偉大的答案sir..genius – YakRangi
根據標準「一個二進制流不需要 有意義地支持fseek調用,其值爲SEEK_END。」那麼這在一般情況下實際上起作用了嗎? – user673679