【C 语言】文件操作 ( C 语言中的文件操作函数 | 磁盘与内存缓冲区 | 缓冲区工作机制 )
文章目錄
- 一、C 語言中的文件操作函數(shù)
- 二、磁盤與內(nèi)存緩沖區(qū)
- 三、緩沖區(qū)工作機制
一、C 語言中的文件操作函數(shù)
讀取 文本文件 可以使用 getc , fgets , fscanf 函數(shù) , 向 文本文件 寫出數(shù)據(jù)可以使用 putc , fputs , fprintf 函數(shù) ;
讀取 二進制文件 可以使用 fread 函數(shù) , 向 二進制文件 寫出數(shù)據(jù)可以使用 fwrite 函數(shù) ;
二、磁盤與內(nèi)存緩沖區(qū)
上述所有讀寫文件的函數(shù) , 都是緩沖區(qū)函數(shù) , 即 C 語言中的文件操作 , 都是緩沖區(qū)函數(shù) ;
磁盤 是由 操作系統(tǒng) 進行讀寫的 , 用戶寫的程序 , 不能直接操作磁盤 ;
操作系統(tǒng) 提供 讀寫文件的 系統(tǒng)調(diào)用 接口 , 在該接口上 是 C 語言的庫函數(shù) , 最上層就是 用戶程序 ;
如果要操作硬件磁盤 , 就需要知道磁盤的驅(qū)動程序 , 磁盤扇區(qū)操作等 , 這就比較復(fù)雜了 ;
C 語言庫函數(shù) 中 , 維護了一個緩沖區(qū) , 這個緩沖區(qū)是 內(nèi)存 中的緩沖區(qū) ;
使用 C 語言文件操作函數(shù) 讀寫的 數(shù)據(jù) , 不是直接來自磁盤 , 而是來自 內(nèi)存中緩沖區(qū) ;
三、緩沖區(qū)工作機制
緩沖區(qū)工作機制 :
如果 緩沖區(qū)大小 64KB , 假如使用 C 語言庫函數(shù) fread 讀取一個字節(jié)數(shù)據(jù) , 實際上會從磁盤文件中讀取 64KB 數(shù)據(jù) , 放入內(nèi)存緩沖區(qū)中 ;
這是因為 讀寫內(nèi)存的效率 遠遠高于 讀寫磁盤的效率 ;
這樣的好處是 , 讀取第 2 個字節(jié)時 , 可以直接從內(nèi)存中讀取 , 不需要再次讀寫磁盤 ;
該機制可以 增加用戶程序的執(zhí)行效率 , 減少磁盤訪問次數(shù) ;
磁盤有讀寫壽命 , 讀寫次數(shù)到了 , 磁盤就會報廢 ;
緩沖區(qū)內(nèi)容寫入磁盤的時機 :
- 緩沖區(qū)滿了
- 調(diào)用 fclose 關(guān)閉文件函數(shù)
總結(jié)
以上是生活随笔為你收集整理的【C 语言】文件操作 ( C 语言中的文件操作函数 | 磁盘与内存缓冲区 | 缓冲区工作机制 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 应用开发】Canvas
- 下一篇: 【C 语言】文件操作 ( 读取文件中的结