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

C語言文件概述:文件流、標準流與 IO 模型基礎

     編輯:C 語言基礎

什麼是文件?

廣義上,文件是數據源的一種,主要作用是持久化存儲數據。在操作系統中,為了統一接口,硬件設備也被抽象為文件:

文件操作標準流程

打開文件 → 讀寫文件 → 關閉文件

  • 打開:獲取文件信息(名稱、狀態、位置指針),填充 FILE 結構體,返回指針
  • 讀寫:通過文件指針操作數據,位置指針自動移動
  • 關閉:斷開關聯,釋放結構體,刷新緩衝區,禁止進一步操作

文件流與數據流

  • 文件流:數據在文件(磁盤)與內存之間傳輸的過程
  • 輸入流:文件 → 內存(讀取)
  • 輸出流:內存 → 文件(寫入)
  • 數據流:廣義數據在程序與外部(文件、網絡、鍵盤、數據庫)傳輸
打開文件本質上就是打開了一個流,建立程序與數據源的通道。

C 語言文件讀寫方式分類

標準流對應設備默認關聯函數
stdin(標準輸入)鍵盤scanf, getchar, gets
stdout(標準輸出)顯示器printf, putchar, puts
stderr(標準錯誤)顯示器perror, fprintf(stderr,...)
stdprn(標準打印)打印機(較少直接使用)
分類函數代表特點適用場景
字符級fgetc, fputc逐字符,靈活但慢字符統計、過濾、教學
字符串/行級fgets, fputs按行處理,保留換行文本文件、日誌、配置
格式化fprintf, fscanf類 printf/scanf,文本可讀結構化文本、數據交換
塊/二進制級fread, fwrite直接內存拷貝,高效緊湊結構體、圖片、大數據、高性能
隨機訪問fseek, rewind, ftell任意位置跳轉數據庫式訪問、大文件定位

文件定位靈活性

C 語言支持多種讀寫起始位置:

  • 順序讀寫:從開頭依次處理
  • 隨機讀寫:fseek 移動位置指針到任意偏移量
  • 重置:rewind 回到開頭
  • 獲取位置:ftell 返回當前偏移量

核心概念總結

  1. 一切皆文件:設備、管道、套接字在 Unix/Linux 下均為文件描述符
  2. 流的抽象:屏蔽底層差異,統一用 FILE* 操作
  3. 緩衝機制:標準庫默認帶緩衝(全緩衝/行緩衝/無緩衝),減少系統調用
  4. 位置指針:每個流獨立維護,不需用戶管理
  5. 錯誤/EOF 標誌:每個流獨立,配合 feof/ferror 判斷

後續學習路線圖

  1. 文件打開/關閉(fopen/fclose)
  2. 字符/字符串/格式化/塊讀寫四大家族
  3. 隨機訪問(fseek/rewind/ftell)
  4. 緩衝區控制(setbuf/setvbuf/fflush)
  5. 文件狀態查詢(feof/ferror/clearerr)
  6. 進階:文件描述符底層操作(open/read/write/close,POSIX)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved