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