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

C語言文件操作基礎重溫:讀、寫、複製完整示例

     編輯:關於C

代碼總覽

單文件演示:以讀模式打開文件讀取內容、以寫模式創建文件寫入數據、將文件 1 內容逐塊複製到文件 2。

#include 
#include 

#define BUFSIZE 64

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

    /* ---------- 1. 讀取文件 ---------- */
    FILE *fp = fopen("./file1", "r");
    if (!fp) { perror("open file1 for read"); exit(EXIT_FAILURE); }

    size_t n = fread(buf, 1, BUFSIZE - 1, fp);
    buf[n] = '\0';
    printf("Read %zu bytes: %s\n", n, buf);
    fclose(fp);

    /* ---------- 2. 寫入文件 ---------- */
    FILE *fp2 = fopen("./file1", "w");
    if (!fp2) { perror("open file1 for write"); exit(EXIT_FAILURE); }

    fwrite(buf, 1, strlen(buf), fp2);
    fclose(fp2);

    /* ---------- 3. 文件複製 ---------- */
    FILE *src = fopen("./file1", "r");
    if (!src) { perror("open src"); exit(EXIT_FAILURE); }
    FILE *dst = fopen("./file2", "w");
    if (!dst) { perror("open dst"); exit(EXIT_FAILURE); }

    while (1) {
        size_t n = fread(buf, 1, 20, src);  // 每次 20 字節
        if (n == 0) break;                  // EOF 或錯誤
        fwrite(buf, 1, n, dst);
    }
    fclose(src);
    fclose(dst);
    printf("Copy done.\n");
    return 0;
}

關鍵點速記

函數關鍵參數返回值注意
fopen路徑, 模式("r"/"w"/"a"/"rb"/"wb"…)FILE* / NULL必須檢查 NULL
freadbuf, 元素大小, 元素個數, fp成功讀取元素數返回值 < 個數 表示 EOF 或錯誤
fwritebuf, 元素大小, 元素個數, fp成功寫入元素數返回值 < 個數 表示磁盤滿/錯誤
fcloseFILE*0 成功 / EOF 失敗刷新緩衝區、釋放結構體

常見錯誤與修正

  • feof 判斷放在循環條件 → 錯誤:while(!feof(fp)) fgetc(fp) 會多讀一次。正確:while((ch=fgetc(fp))!=EOF) 或 while(fread(...))
  • 文本模式換行符轉換:Windows 下 "r" 會將 \r\n 轉 \n,二進制用 "rb" 保持原樣
  • 緩衝區大小:示例用 64 字節教學,實際建議 4KB-64KB (如 BUFSIZ)

總結

文件操作核心四步:打開 → 檢查 → 讀/寫循環 → 關閉。掌握 fread/fwrite 塊操作配合返回值判斷 EOF,是高效、正確處理二進制/文本文件的關鍵。

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