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

C語言文件操作完全指南:讀寫、複製與緩衝控制

     編輯:關於C語言

標準 I/O 函數族

C 語言通過 stdio.h 提供文件操作接口,核心函數包括:

  • fopen / fclose:打開/關閉文件流
  • fread / fwrite:二進制塊讀寫
  • fgets / fputs:文本行讀寫
  • fprintf / fscanf:格式化讀寫
  • fflush:強制刷新緩衝區

文件打開模式詳解

模式含義文件不存在文件存在定位
r只讀失敗保留內容開頭
w只寫創建截斷為0開頭
a追加創建保留內容結尾
r+讀寫失敗保留內容開頭
w+讀寫創建截斷為0開頭
a+讀寫追加創建保留內容結尾

加 b 後綴(如 rb)表示二進制模式,跨平台處理換行符時必須使用。

實戰代碼:文件讀寫與複製

下面示例演示讀取文件、寫入文件、以及文件複製(分塊讀寫,避免大文件內存溢出):

#include 
#include 

int main() {
    char buf[64] = "hello world!";

    /* 寫入文件 */
    FILE *fp2 = fopen("./file1", "w");
    if (!fp2) { perror("文件打開異常!"); exit(-1); }
    fwrite(buf, 1, 64, fp2);
    fclose(fp2);

    /* 複製文件:file1 -> file2,每次讀寫 20 字節 */
    FILE *fp3 = fopen("./file1", "r");
    if (!fp3) { perror("文件讀取異常!"); exit(-1); }
    FILE *fp4 = fopen("./file2", "w");
    if (!fp4) { perror("文件寫入異常!"); exit(-1); }

    while (1) {
        size_t num = fread(buf, 1, 20, fp3);
        if (num <= 0) break;
        fwrite(buf, 1, num, fp4);
    }
    fclose(fp3);
    fclose(fp4);
    return 0;
}

關鍵點總結

  1. 錯誤檢查:每次 fopen 後必須判空,使用 perror 輸出系統錯誤信息。
  2. 緩衝機制:標準 I/O 預設全緩衝(文件)或行緩衝(終端),fflush 可強制落盤。
  3. 二進制 vs 文本:Windows 下文本模式會將 \n 轉換為 \r\n,二進制模式不轉換,處理圖片/結構體時必須用 b 模式。
  4. 分塊複製:大文件複製時使用固定大小緩衝區(如 4KB),平衡內存與系統調用開銷。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved