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

C/C++ 學習之路(第 11 課):檔案讀取基礎 — 逐字元讀取完整示範

     編輯:關於C語言

檔案 I/O 基礎流程

C 語言檔案操作核心三步驟:fopen 開啟 → 讀寫操作 → fclose 關閉。本課示範最基本的逐字元讀取模式。

完整程式碼

#include 
#include 

void readFile() {
    FILE *file;      // 檔案指標
    char c;          // 暫存單一字元

    file = fopen("c:\\test.txt", "r"); // 開啟檔案 (Windows 路徑需雙反斜線)
    if (NULL == file) {                // 檢查開啟是否成功
        printf("can't open this file, make sure the file exist!!!\n");
        exit(1);                       // 終止程式
    }
    puts("open file successful!!!");
    puts("READ FILE NOW:");

    c = fgetc(file);                   // 讀取第一個字元
    while (c != EOF) {                 // EOF 為檔案結束標誌 (通常為 -1)
        putchar(c);                    // 輸出到螢幕
        c = fgetc(file);               // 讀取下一個字元
    }
    printf("\n");
    fclose(file);                      // 釋放資源,刷新緩衝區
}

關鍵函式說明

函式用途回傳值
fopen(path, mode)開啟檔案成功:檔案指標;失敗:NULL
fgetc(fp)讀取單一字元字元值 (int);EOF 表示結束/錯誤
putchar(c)輸出單一字元到 stdout成功:字元值;失敗:EOF
fclose(fp)關閉檔案成功:0;失敗:EOF

執行結果示範

檔案讀取執行畫面

常見模式變體

  • 逐行讀取:fgets(buf, size, fp) — 適合文字處理
  • 二進位塊讀取:fread(ptr, size, count, fp) — 適合結構體/圖片/影音
  • 格式化讀取:fscanf(fp, fmt, ...) — 類 scanf 從檔案讀取

錯誤處理最佳實踐

  1. 永遠檢查 fopen 回傳值,失敗時給出明確錯誤訊息 (可用 perror)
  2. 使用 ferror(fp) 檢測讀寫過程中的錯誤旗標
  3. 搭配 feof(fp) 區分「正常結束」與「讀取錯誤」
  4. 大型檔案考慮使用 setvbuf 調整緩衝區大小提升效能

跨平台路徑處理

Windows 使用反斜線 \\,Linux/macOS 使用正斜線 /。可定義巨集:

#ifdef _WIN32
#define PATH_SEP '\\'
#else
#define PATH_SEP '/'
#endif

或使用標準庫 stdio.h 的相對路徑,編譯器會自動處理。

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