1. 程式人生 > >5.9 標準I/O庫_二進位制I/O

5.9 標準I/O庫_二進位制I/O

    下列兩個函式執行二進位制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的基本問題是,它只能用於讀在同一個系統上已寫的資料。其原因是:

  • 在一個結構中,同一成員的偏移量可能因編譯器和系統而異(由於不同的對準要求)。
  • 用來儲存多位元組整數和浮點值的二進位制格式在不同的機器體系結構間也可能不同。