版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
文件的打開與關閉C語言程序設計文件的打開與關閉
C語言中文件操作一般包括三個步驟:01用fopen函數(shù)打開文件02進行讀寫操作03用fclose函數(shù)關閉文件打開與關閉文件對文件讀寫之前應該“打開”該文件,在使用結束之后應“關閉”該文件。所謂“打開”是指為文件建立相應的信息區(qū)(用來存放有關文件的信息)和文件緩沖區(qū)(用來暫時存放輸入輸出的數(shù)據(jù))。在編寫程序時,在打開文件的同時,一般都指定一個指針變量指向該文件,也就是建立起指針變量與文件之間的聯(lián)系,這樣,就可以通過該指針變量對文件進行讀寫了。所謂“關閉”是指撤銷文件信息區(qū)和文件緩沖區(qū),使文件指針變量不再指向該文件,顯然就無法進行對文件的讀寫了。fopen函數(shù)fopen函數(shù)用于打開文件,并把結果賦給FILE指針變量,它的一般形式為:“文件名”是要打開的文件名,可以是完整的文件路徑FILE*fp;//fp是一個指向FILE結構體類型的指針變量fp=fopen("file_data.txt","r");//以只讀方式打開文件file_data.txtfopen(文件名,文件打開方式);Fp為文件指針,每一個打開的文件必須對應一個單獨的文件指針變量?!拔募睘橐蜷_的文件的名字,通常為字符串形式,可以包括文件路徑?!拔募褂梅绞健敝付ㄎ募念愋停ㄎ谋疚募蚨M制文件)和打開后的操作方式(讀、寫、追加)。fopen函數(shù)說明:r:只讀,用于向程序輸入數(shù)據(jù),要求文件已經(jīng)存在,若文件不存在則返回空指針NULL。w:只寫,用于向文件輸出數(shù)據(jù)。若文件已經(jīng)存在則將文件刪除,否則創(chuàng)建新的空文件。a:追加,用于向已存在的文件追加數(shù)據(jù)。若文件不存在,則提示出錯。文本文件:r,w,a,r+,w+,a+二進制文件:rb,wb,ab,rb+,wb+,ab+“文件使用方式”包括:含義為:用fopen函數(shù)打開數(shù)據(jù)文件
fopen(文件名,使用文件方式);使用文件方式文件使用方式含義如果指定的文件不存在“r”(只讀)為了輸入數(shù)據(jù),打開一個已存在的文本文件出錯“w”(只寫)為了輸出數(shù)據(jù),打開一個文本文件建立新文件“a”(追加)向文本文件尾添加數(shù)據(jù)出錯“rb”(只讀)為了輸入數(shù)據(jù),打開一個二進制文件出錯“wb”(只寫)為了輸出數(shù)據(jù),打開一個二進制文件建立新文件“ab”(追加)向二進制文件尾添加數(shù)據(jù)出錯“r+”(讀寫)為了讀和寫,打開一個文本文件出錯“w+”(讀寫)為了讀和寫,建立一個新的文本文件建立新文件“a+”(讀寫)為了讀和寫,打開一個文本文件出錯“rb+”(讀寫)為了讀和寫,打開一個二進制文件出錯“wb+”(讀寫)為了讀和寫,建立一個新的二進制文件建立新文件“ab+”(讀寫)為讀寫打開一個二進制文件出錯用fopen函數(shù)打開數(shù)據(jù)文件(1)用“r”方式打開的文件只能用于向計算機輸入而不能用作向該文件輸出數(shù)據(jù),而且該文件應該已經(jīng)存在,并存有數(shù)據(jù),這樣程序才能從文件中讀數(shù)據(jù)。不能用“r”方式打開一個并不存在的文件,否則出錯。(2)用“w”方式打開的文件只能用于向該文件寫數(shù)據(jù)(即輸出文件),而不能用來向計算機輸入。如果原來不存在該文件,則在打開文件前新建立一個以指定的名字命名的文件。如果原來已存在一個以該文件名命名的文件,則在打開文件前先將該文件刪去,然后重新建立一個新文件。(3)如果希望向文件末尾添加新的數(shù)據(jù)(不希望刪除原有數(shù)據(jù)),則應該用“a”方式打開。但此時應保證該文件已存在;否則將得到出錯信息。在每個數(shù)據(jù)文件中自動設置了一個隱式的“文件讀寫位置標記”,它指向的位置就是當前進行讀寫的位置。如果“文件讀寫位置標記”在文件開頭,則下一次的讀寫就是文件開頭的數(shù)據(jù)。然后“文件讀寫位置標記”自動移到下一個讀寫位置,以便讀寫下一個數(shù)據(jù)。以添加方式打開文件時,文件讀寫位置標記移到文件末尾。(4)用“r+”“w+”“a+”方式打開的文件既可用來輸入數(shù)據(jù),也可用來輸出數(shù)據(jù)。
fopen(文件名,使用文件方式);用fopen函數(shù)打開數(shù)據(jù)文件if((fp=fopen(″file1″,″r″))==NULL){ printf(″cannotopenthisfile\n″); exit(0);}打開一個文件的常用方法
fopen(文件名,使用文件方式);(5)如果不能實現(xiàn)“打開”的任務,fopen函數(shù)將會帶回一個空指針值NULL。(6)C標準建議用表10.1列出的文件使用方式打開文本文件或二進制文件,但目前使用的有些C編譯系統(tǒng)可能不完全提供所有這些功能,需要注意所用系統(tǒng)的規(guī)定。(7)有12種文件使用方式,其中有6種是在第一個字母后面加了字母b的(如rb,wb,ab,rb+,wb+,ab+),b表示二進制方式。其實,帶b和不帶b只有一個區(qū)別,即對換行的處理。由于在C語言用一個′\n′即可實現(xiàn)換行,而在Windows系統(tǒng)中為實現(xiàn)換行必須要用“回車”和“換行”兩個字符,即′\r′和′\n′。因此,如果使用的是文本文件并且用“w”方式打開,在向文件輸出時,遇到換行符′\n′時,系統(tǒng)就把它轉換為′\r′和′\n′兩個字符,否則在Windows系統(tǒng)中查看文件時,各行連成一片,無法閱讀。同樣,如果有文本文件且用“r”方式打開,從文件讀入時,遇到′\r′和′\n′兩個連續(xù)的字符,就把它們轉換為′\n′一個字符。如果使用的是二進制文件,在向文件讀寫時,不需要這種轉換。加b表示使用的是二進制文件,系統(tǒng)就不進行轉換。用fopen函數(shù)打開數(shù)據(jù)文件
fopen(文件名,使用文件方式);(8)如果用“wb”的文件使用方式,并不意味著在文件輸出時把內(nèi)存中按ASCII形式保存的數(shù)據(jù)自動轉換成二進制形式存儲。輸出的數(shù)據(jù)形式是由程序中采用什么讀寫語句決定的。例如,用fscanf和fprintf函數(shù)是按ASCII方式進行輸入輸出,而fread和fwrite函數(shù)是按二進制進行輸入輸出。(9)程序中可以使用3個標準的流文件——標準輸入流、標準輸出流和標準出錯輸出流。系統(tǒng)已對這3個文件指定了與終端的對應關系。標準輸入流是從終端的輸入,標準輸出流是向終端的輸出,標準出錯輸出流是當程序出錯時將出錯信息發(fā)送到終端。程序開始運行時系統(tǒng)自動打開這3個標準流文件。對fopen函數(shù)的補充說明:用fopen函數(shù)打開數(shù)據(jù)文件
例如:要以只寫方式打開當前目錄下的文本文件result.txt,可采用如下形式:FILE*fp;Fp=fopen(“result.txt”,”w”);01文件打開成功02文件打開失敗fopen函數(shù)fopen函數(shù),會由于無法打開指定文件而出現(xiàn)錯誤。如果出錯,fopen函數(shù)會返回一個空指針值NULL(NULL在stdio.h中被定義為0)。FILE*fp;if((fp=fopen("file_data.txt","r"))==NULL){ printf("cannotopenthefile\n"); exit(0);}
例如以“r”方式打開時,文件不存在,要進行錯誤處理。fclose函數(shù)fclose(文件類型指針);fclose(fp);在操作完一個文件后要關閉文件指針,以釋放緩沖區(qū)內(nèi)存,防止其他誤操作關閉文件就是使文件指針變量不再指向該文件。
fclose函數(shù)的一般形式為:用fclose函數(shù)關閉數(shù)據(jù)文件在使用完一個文件后應該關閉它,以防止它再被誤用?!瓣P閉”就是撤銷文件信息區(qū)和文件緩沖區(qū),使文件指針變量不再指向該文件,也就是文件指針變量與文件“脫鉤”,此后不能再通過該指針對原來與其相聯(lián)系的文件進行讀寫操作,除非再次打開,使該指針變量重新指向該文件。如果不關閉文件就結束程序運行將會丟失數(shù)據(jù)。因為,在向文件寫數(shù)據(jù)時,是先將數(shù)據(jù)輸出到緩沖區(qū),待緩沖區(qū)充滿后才正式輸出給文件。如果當數(shù)據(jù)未充滿緩沖區(qū)時程序結束運行,就有可能使緩沖區(qū)中的數(shù)據(jù)丟失。用fclose函數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建立財務制度與內(nèi)控制度
- 政府采購財務制度
- 北京市社會團體財務制度
- 4s店售后財務制度
- 亞冬會執(zhí)行財務制度
- 關于消防安全的制度
- 公司月度質量例會制度
- 疫情就餐學生管理制度表(3篇)
- 國美創(chuàng)維活動策劃方案(3篇)
- 小院種植施工方案(3篇)
- 實施指南(2025)《HG-T 5026-2016氯堿工業(yè)回收硫酸》
- 酒店餐飲食品安全管理手冊
- 無人機安全操控理論考試題及答案
- 2025年蘇州經(jīng)貿(mào)職業(yè)技術學院單招綜合素質考試題庫附答案
- 儀表聯(lián)鎖培訓課件
- 華為固定資產(chǎn)管理制度
- 客運駕駛員培訓教學大綱
- 洗浴員工協(xié)議書
- 清欠歷史舊賬協(xié)議書
- 臨床創(chuàng)新驅動下高效型護理查房模式-Rounds護士查房模式及總結展望
- 乙肝疫苗接種培訓
評論
0/150
提交評論