二進位檔案操作(fwrite、fread)

使用二進位模式時,在寫入或讀取檔案時並不會發生字元轉換,寫入檔案甚麼,就會讀取甚麼。

可以使用fread()函式讀入二進位檔案,用fwrite()函式寫入二進位檔案,兩者皆以byte為單位進行讀寫。
int fread(char *buffer, int size, int count, FILE *fp);
Buffer為讀入資料要存放的地方,size是讀入的每一筆資料長度(byte),count為讀入的筆數,對於二進位檔案而言,若要判斷檔案是否到尾端,不能用讀到-1來判斷,因為讀取過程可能就會得到-1,改用feof()函式來判斷是否到結尾,以下程式將陣列資料寫入檔案,之後再讀取出來,fopen參數加上’b’表示操作二進制檔案,.dat的檔案格式是我們自己隨意定的。

#include<cstdio>

int main() {
    FILE *file = fopen("test.dat", "wb");
    int arr[3] = {1, 2, 3}; 
    fwrite((char*) arr, sizeof(arr), 1, file); 
    fclose(file);

    file = fopen("test.dat", "rb"); 
    int input[3] = {0, 0, 0}; 
    fread((char*)input, sizeof(arr), 1, file);  //讀取資料,input={1,2,3}
    fclose(file); 

    return 0; 
}