下列兩個函數執行二進制I/O操作:
- #include <stdio.h>
- size_t fread(void *restrict ptr, size_t size, size_t nobj, FILE *restrict fp);
- size_t fwrite(const void *restrict ptr, size_t size, size_t nobj, FILE *restrict fp);
返回值:讀或寫的對象數
這兩個函數有兩種常見的用法:
- 讀或寫一個二進制數組。
- 讀或寫一個結構。
對於讀,如果出錯或到達文件尾端,則此數字可以少於nobj。在這種情況下,應調用ferror或feof以判斷究竟屬於哪一種情況。對於寫,如果返回值少於所要求的nobj,則出錯。
使用二進制I/O的基本問題是,它只能用於讀在同一個系統上已寫的數據。其原因是:
- 在一個結構中,同一成員的偏移量可能因編譯器和系統而異(由於不同的對準要求)。
- 用來存儲多字節整數和浮點值的二進制格式在不同的機器體系結構間也可能不同。