C語言中對文件的操作

本章討論流式文件的打開、關閉、讀、寫、 定位等各種操作。文件指針在C語言中用一個指針變量指向一個文件, 這個指針稱爲文件指針。通過文件指針就可對它所指的文件進行各種操作。 定義說明文件指針的一般形式爲: FILE* 指針變量標識符; 其中FILE應爲大寫,它實際上是由系統定義的一個結構, 該結構中含有文件名、文件狀態和文件當前位置等信息。 在編寫源程序時不必關心FILE結構的細節。例如:FILE *fp; 表示fp是指向FILE結構的指針變量,通過fp 即可找存放某個文件信息的結構變量,然後按結構變量提供的信息找到該文件, 實施對文件的操作。習慣上也籠統地把fp稱爲指向一個文件的指針。文件的打開與關閉文件在進行讀寫操作之前要先打開,使用完畢要關閉。 所謂打開文件,實際上是建立文件的各種有關信息, 並使文件指針指向該文件,以便進行其它操作。關閉文件則斷開指針與文件之間的聯繫,也就禁止再對該文件進行操作。 



在C語言中,文件操作都是由庫函數來完成的。 在本章內將介紹主要的文件操作函數。 



文件打開函數fopen 



fopen函數用來打開一個文件,其調用的一般形式爲: 文件指針名=fopen(文件名,使用文件方式) 其中,“文件指針名”必須是被說明爲FILE 類型的指針變量,“文件名”是被打開文件的文件名。 “使用文件方式”是指文件的類型和操作要求。“文件名”是字符串常量或字符串數組。例如: 



FILE *fp; 

fp=("file a","r"); 



其意義是在當前目錄下打開文件file a, 只允許進行“讀”操作,並使fp指向該文件。 



又如: 



FILE *fphzk 

fphzk=("c://hzk16',"rb") 



其意義是打開C驅動器磁盤的根目錄下的文件hzk16, 這是一個二進制文件,只允許按二進制方式進行讀操作。兩個反斜線“// ”中的第一個表示轉義字符,第二個表示根目錄。使用文件的方式共有12種,下面給出了它們的符號和意義。 



文件使用方式 意 義 

“rt” 只讀打開一個文本文件,只允許讀數據 

“wt” 只寫打開或建立一個文本文件,只允許寫數據 

“at” 追加打開一個文本文件,並在文件末尾寫數據 

“rb” 只讀打開一個二進制文件,只允許讀數據 

“wb” 只寫打開或建立一個二進制文件,只允許寫數據 

“ab” 追加打開一個二進制文件,並在文件末尾寫數據 

“rt+” 讀寫打開一個文本文件,允許讀和寫 

“wt+” 讀寫打開或建立一個文本文件,允許讀寫 

“at+” 讀寫打開一個文本文件,允許讀,或在文件末追加數 據 

“rb+” 讀寫打開一個二進制文件,允許讀和寫 

“wb+” 讀寫打開或建立一個二進制文件,允許讀和寫 

“ab+” 讀寫打開一個二進制文件,允許讀,或在文件末追加數據 



對於文件使用方式有以下幾點說明: 



1. 文件使用方式由r,w,a,t,b,+六個字符拼成,各字符的含義是: 



r(read): 讀 

w(write): 寫 

a(append): 追加 

t(text): 文本文件,可省略不寫 

b(banary): 二進制文件 

+: 讀和寫 



2. 凡用“r”打開一個文件時,該文件必須已經存在, 且只能從該文件讀出。 



3. 用“w”打開的文件只能向該文件寫入。 若打開的文件不存在,則以指定的文件名建立該文件,若打開的文件已經存在,則將該文件刪去,重建一個新文件。 



4. 若要向一個已存在的文件追加新的信息,只能用“a ”方式打開文件。但此時該文件必須是存在的,否則將會出錯。 



5. 在打開一個文件時,如果出錯,fopen將返回一個空指針值NULL。在程序中可以用這一信息來判別是否完成打開文件的工作,並作相應的處理。因此常用以下程序段打開文件: 



if((fp=fopen("c://hzk16","rb")==NULL) 

{ 

printf("/nerror on open c://hzk16 file!"); 

getch(); 

exit(1); 

} 



這段程序的意義是,如果返回的指針爲空,表示不能打開C盤根目錄下的hzk16文件,則給出提示信息“error on open c:/ hzk16file!”,下一行getch()的功能是從鍵盤輸入一個字符,但不在屏幕上顯示。在這裏,該行的作用是等待, 只有當用戶從鍵盤敲任一鍵時,程序才繼續執行, 因此用戶可利用這個等待時間閱讀出錯提示。敲鍵後執行exit(1)退出程序。 



6. 把一個文本文件讀入內存時,要將ASCII碼轉換成二進制碼, 而把文件以文本方式寫入磁盤時,也要把二進制碼轉換成ASCII碼,因此文本文件的讀寫要花費較多的轉換時間。對二進制文件的讀寫不存在這種轉換。 



7. 標準輸入文件(鍵盤),標準輸出文件(顯示器 ),標準出錯輸出(出錯信息)是由系統打開的,可直接使用。文件關閉函數fClose文件一旦使用完畢,應用關閉文件函數把文件關閉, 以避免文件的數據丟失等錯誤。 



fclose函數 



調用的一般形式是: fclose(文件指針); 例如: 



fclose(fp); 正常完成關閉文件操作時,fclose函數返回值爲0。如返回非零值則表示有錯誤發生。文件的讀寫對文件的讀和寫是最常用的文件操作。 


發佈了24 篇原創文章 · 獲贊 5 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章