首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言基礎

C語言二進位檔案讀寫:fwrite 與 fread 函數實戰

     編輯:C 語言基礎

二進位檔案的區塊讀寫

標準庫提供 fwrite() 與 fread() 以區塊方式處理二進位資料,適合陣列、結構等大量資料的高效存取。

fwrite() 寫入浮點數陣列

#include <stdio.h>

int main(void) {
    float f[6] = {3.2, -4.34, 25.04, 0.1, 50.56, 80.5};
    FILE *fp = fopen("test_b.dat", "wb");
    if (!fp) return 1;
    fwrite(f, sizeof(float), 6, fp);  // 一次寫入 6 個 float
    fclose(fp);
    return 0;
}

fwrite(ptr, size, count, stream) 將 ptr 指向的記憶體區塊,以 size 位元組為單位,寫入 count 個元素至 stream。

fread() 讀取整數陣列並檢查錯誤

#include <stdio.h>

int main(void) {
    FILE *fp = fopen("test_b.dat", "rb");
    if (!fp) return 1;
    int dat[100];
    size_t n = fread(dat, sizeof(int), 100, fp);
    if (n != 100) {
        if (feof(fp))
            printf("End of file\n");
        else
            printf("Read error\n");
    }
    fclose(fp);
    return 0;
}

讀取時應檢查實際讀取元素數(傳回值),結合 feof() 區分檔案結束與讀取錯誤。

緩衝區機制與 fflush()

標準 I/O 採用全緩衝:寫入資料先存於輸出緩衝區,滿或呼叫 fclose() 才實際寫入磁碟。若程式異常終止未呼叫 fclose(),資料可能遺失。fflush(FILE *stream) 可強制刷新輸出緩衝區,清除輸入緩衝區,確保資料即時落盤。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved