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

C 語言檔案操作核心觀念:資料流、存取方式與檔案指標完整指南

     編輯:關於C語言

C 語言檔案操作核心觀念:資料流、存取方式與檔案指標完整指南

檔案操作是 C 語言持久化資料的關鍵機制。本文系統整理檔案概念、資料流模型、兩種存取方式、文字/二進位檔案差異、緩衝區機制、檔案指標結構,為後續 fopen/fread/fwrite/fseek 等 API 奠定堅實理論基礎。

一、檔案與資料流模型

C 語言將所有輸入輸出裝置(鍵盤、螢幕、磁碟、網路)統一視為資料流:

  • 輸出:系統不添加額外資訊,直接將位元組序列寫入目的地
  • 輸入:逐位元組讀取,直到遇到 EOF 或檔案結束標記

此抽象層使程式碼與具體硬體解耦,同一組 API 可操作不同裝置。

二、兩種存取方式

方式特點適用場景
循序存取必須從檔案開頭開始,依序讀寫;欲存取第 n 位元組,須先處理前 n-1 位元組文字檔、日誌、串流資料
隨機存取可透過 fseek 指定位元組偏移量,直接跳轉讀寫資料庫索引、大型二進位檔、多媒體檔案

三、文字檔 vs 二進位檔

文字檔

  • 資料以 ASCII 字元序列 儲存,每字元 1 位元組
  • 輸出時:數值 → 字元轉換(如 printf)
  • 輸入時:字元 → 數值轉換(如 scanf)
  • 預設標準輸入/輸出(鍵盤/螢幕)即為文字模式

二進位檔

  • 資料以記憶體原始位元組映像儲存,無轉換開銷
  • int 佔 2/4 位元組,float 佔 4 位元組,結構體按記憶體佈局連續寫入
  • 讀寫速度快、體積小,但不可直接用文字編輯器閱讀
  • 不可直接對終端機輸出/輸入二進位資料

四、緩衝區機制

ANSI C 規定系統為每個檔案建立記憶體緩衝區:

  • 寫入:資料先放入緩衝區,滿時一次寫入裝置
  • 讀取:一次從裝置讀入一塊資料到緩衝區,後續從緩衝區取用

此機制大幅減少系統呼叫次數,提升 I/O 效能。fflush 可強制刷新輸出緩衝區。

五、檔案指標

FILE *fp 是指向內部結構體 FILE 的指標,該結構體封裝:

  • 緩衝區位址與當前讀寫位置
  • 檔案模式(讀/寫/附加)
  • 錯誤旗標、EOF 旗標

定義於 <stdio.h>,使用者無需關心內部細節,僅透過指標傳遞給 API 即可。

FILE *fp1, *fp2;  // 宣告兩個檔案指標
fp1 = fopen("data.txt", "r");
fp2 = fopen("data.bin", "wb");

總結

掌握「資料流抽象、存取方式選擇、文字/二進位差異、緩衝區運作、FILE 指標角色」五大核心觀念,即能靈活運用 C 標準庫進行高效、可攜式的檔案操作開發。

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