目前C 語言所使用的磁盤文件系統(tǒng)有兩大類:一類稱為緩沖文件系統(tǒng),又稱為標(biāo)準(zhǔn)文件系統(tǒng);另一類稱為非緩沖文件系統(tǒng)。緩沖文件系統(tǒng)的特點是:系統(tǒng)自動地在內(nèi)存區(qū)為每一個正在使用的文件開辟一個緩沖區(qū)。從磁盤向內(nèi)存讀入數(shù)據(jù)時,則一次從磁盤文件將一些數(shù)據(jù)輸入到內(nèi)存緩沖區(qū)(充滿緩沖區(qū)),然后再從緩沖區(qū)逐個地將數(shù)據(jù)送給接收變量;向磁盤文件輸出數(shù)據(jù)時,先將數(shù)據(jù)送到內(nèi)存中的緩沖區(qū),裝滿緩沖區(qū)后才一起送到磁盤去。用緩沖區(qū)可以一次讀入一批數(shù)據(jù),或輸出一批數(shù)據(jù),而不是執(zhí)行一次輸入或輸出函數(shù)就去訪問一次磁盤,這樣做的目的是減少對磁盤的實際讀寫次數(shù),因為每一次讀寫都要移動磁頭并尋找磁道扇區(qū),花費一定的時間。緩沖區(qū)的大小由各個具體的C 版本確定,一般為512 字節(jié)。緩沖文件系統(tǒng)的讀寫,如圖10.2 所示。非緩沖文件系統(tǒng)不由系統(tǒng)自動設(shè)置緩沖區(qū),而由用戶自己根據(jù)需要設(shè)置。在傳統(tǒng)的UNIX 系統(tǒng)下,用緩沖文件系統(tǒng)來處理文本文件,用非緩沖文件系統(tǒng)處理二進(jìn)制文件。1983 年ANSI C 標(biāo)準(zhǔn)決定不采用非緩沖文件系統(tǒng),而只采用緩沖文件系統(tǒng)。即用緩沖文件系統(tǒng)處理文本文件,也用它來處理二進(jìn)制文件。也就是將緩沖文件系統(tǒng)擴充為可以處理二進(jìn)制文件。一般把緩沖文件系統(tǒng)的輸入輸出稱為標(biāo)準(zhǔn)輸入輸出(標(biāo)準(zhǔn)I/O),非緩沖文件系統(tǒng)的輸入輸出稱為系統(tǒng)輸入輸出(系統(tǒng)I/O)。在C 語言中,沒有輸入輸出語句,對文件的讀寫都是用庫函數(shù)來實現(xiàn)的。ANSI 規(guī)定了標(biāo)準(zhǔn)輸入輸出函數(shù),用它們對文件進(jìn)行讀寫。本章主要介紹ANSI C 的文件系統(tǒng)以及對其讀寫方法。