第 1 頁(yè):8.1 C文件概述 |
第 4 頁(yè):8.2 文件處理程序結(jié)構(gòu)和文件輸入輸出常用庫(kù)函數(shù) |
7.文件類(lèi)型和文件類(lèi)型指針變量
為了正確地完成文件讀寫(xiě),操作系統(tǒng)為每個(gè)正被程序使用的文件在內(nèi)存中開(kāi)辟一個(gè)存儲(chǔ)區(qū),用于存放有關(guān)對(duì)文件進(jìn)行操作所需的控制信息(簡(jiǎn)稱(chēng)控制塊)。如文件名、文件讀寫(xiě)狀態(tài)。文件緩沖區(qū)大小和位置、當(dāng)前讀寫(xiě)位置等。控制塊是一個(gè)結(jié)構(gòu)變量,其類(lèi)型由系統(tǒng)預(yù)定義,取名為FILE,習(xí)慣稱(chēng)文件類(lèi)型。程序通過(guò)指向該控制塊的指針調(diào)用系統(tǒng)提供的文件處理庫(kù)函數(shù)。
程序在使用文件前,先調(diào)用文件打開(kāi)函數(shù)。打開(kāi)函數(shù)為將要使用的文件指定一個(gè)FILE類(lèi)型的結(jié)構(gòu)變量,并返回該結(jié)構(gòu)的指針。系統(tǒng)通過(guò)指向該結(jié)構(gòu)的指針來(lái)引用結(jié)構(gòu)中的文件控制信息,實(shí)現(xiàn)正確讀寫(xiě)對(duì)應(yīng)的文件。
程序要使用文件,就要定義FILE類(lèi)型的指針變量(稱(chēng)文件指針變量)。例如:
FILE * fp;
定義如是一個(gè)文件指針變量,它能指向前述類(lèi)型為FILE的文件控制塊結(jié)構(gòu)變量。
8.文件打開(kāi)庫(kù)函數(shù) fopen()
在讀寫(xiě)文件之前,先得打開(kāi)文件。打開(kāi)文件可使用庫(kù)函數(shù)fopen() 。調(diào)用函數(shù)fopen() 的一般形式為
fopen(文件名,使用方式)
其中文件名(可能還包括盤(pán)符和目錄路徑) 為字符串表達(dá)式。使用方式也是一個(gè)字符串,用來(lái)指明文件的讀寫(xiě)方式。函數(shù)fopen() 將返回文件控制塊結(jié)構(gòu)變量指針,程序應(yīng)將調(diào)用函數(shù)fopen(),返回的指針值賦給某個(gè)文件指針變量來(lái)保存。如語(yǔ)句
fp = fopen(“\\usr4\\smp.dat”,“r”);
以文件讀方式打開(kāi)根目錄下的usr4子目錄中的smp.dat文件。
調(diào)用函數(shù)fopen()時(shí),可能會(huì)因某種原因不能打開(kāi)文件。如讀方式下打開(kāi)一個(gè)不存在的文件;在寫(xiě)方式下,外部存儲(chǔ)介質(zhì)已無(wú)剩余的自由空間,或外設(shè)故障,或超過(guò)系統(tǒng)能同時(shí)打開(kāi)的文件數(shù);等等。文件不能打開(kāi)時(shí),函數(shù)fopen()將返回一個(gè)空指針值NULL。程序應(yīng)考慮到文件不能正常打開(kāi)的極端情況,所以常用以下形式的C代碼描述打開(kāi)一個(gè)文件的要求:
if((fp =fopen( filename,“r”))==NULL) {
printf(“Can not open %s file.\n”, filename);
exit(0); /* 結(jié)束程序的執(zhí)行,回到環(huán)境或操作系統(tǒng) */
}
相關(guān)推薦:推薦:2010年計(jì)算機(jī)軟件水平考試必備完美攻略北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |