版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第12章文件
本章主要任務(wù):
1、文件基本術(shù)語。
2、文件指針文件打開/關(guān)閉。
3、文件讀寫,文件定位。常州信息學(xué)院C語言課程組文件
文件: 存儲(chǔ)在外部介質(zhì)上一組相關(guān)數(shù)據(jù)的集合。例如,
程序文件就是程序代碼的集合;數(shù)據(jù)文件是數(shù)據(jù)的集合。
常州信息學(xué)院C語言課程組文件名 文件名: 操作系統(tǒng)以文件為單位對(duì)數(shù)據(jù)進(jìn)行管理,每個(gè)文件有一個(gè)名稱,文件名是文件的標(biāo)識(shí),操作系統(tǒng)通過文件名訪問文件。例如,通過文件名查找,打開文件,然后讀取或?qū)懭霐?shù)據(jù)。
常州信息學(xué)院C語言課程組磁盤文件、設(shè)備文件
磁盤文件: 文件一般保存在磁介質(zhì)(如軟盤、硬盤)上,所以稱為磁盤文件。
設(shè)備文件: 操作系統(tǒng)還經(jīng)常將與主機(jī)相連接的I/O設(shè)備(如鍵盤-輸入文件、顯示器、打印機(jī)-輸出文件)也看作為文件,即設(shè)備文件。
常州信息學(xué)院C語言課程組ASCII文件ASCII文件(文本文件): 每個(gè)字節(jié)存放一個(gè)ASCII碼,代表一個(gè)字符。ASCII文件可以閱讀,可以打印,但是它與內(nèi)存數(shù)據(jù)交換時(shí)需要轉(zhuǎn)換。
常州信息學(xué)院C語言課程組二進(jìn)制文件二進(jìn)制文件: 將內(nèi)存中的數(shù)據(jù)按照其在內(nèi)存中的存儲(chǔ)形式原樣輸出、并保存在文件中。二進(jìn)制文件占用空間少,內(nèi)存數(shù)據(jù)和磁盤數(shù)據(jù)交換時(shí)無須轉(zhuǎn)換,但是二進(jìn)制文件不可閱讀、打印。
常州信息學(xué)院C語言課程組文件類型指針
文件類型(結(jié)構(gòu)體)-FILE類型.FILE類型是一種結(jié)構(gòu)體類型,在stdio.h中定義,用于存放文件的當(dāng)前的有關(guān)信息。 程序使用一個(gè)文件,系統(tǒng)就為此文件開辟一個(gè)FILE類型變量。程序使用幾個(gè)文件,系統(tǒng)就開辟幾個(gè)FILE類型變量,存放各個(gè)文件的相關(guān)信息。
常州信息學(xué)院C語言課程組FILE常州信息學(xué)院C語言課程組文件指針變量(文件指針)
通常對(duì)FILE結(jié)構(gòu)體的訪問是通過FILE類型指針變量(簡(jiǎn)稱:文件指針)完成,文件指針變量指向文件類型變量,簡(jiǎn)單地說,文件指針指向文件。
事實(shí)上只需要使用文件指針完成文件的操作,根本不必關(guān)心文件類型變量的內(nèi)容。在打開一個(gè)文件后,系統(tǒng)開辟一個(gè)文件變量并返回此文件的文件指針;將此文件指針保存在一個(gè)文件指針變量中,以后所有對(duì)文件的操作都通過此文件指針變量完成;直到關(guān)閉文件,文件指針指向的文件類型變量釋放。
常州信息學(xué)院C語言課程組常州信息學(xué)院C語言課程組文件的打開(fopen函數(shù))
文件的打開后才能進(jìn)行操作,文件打開通過調(diào)用fopen函數(shù)實(shí)現(xiàn)。 調(diào)用fopen的格式是:
FILE*fp;
fp=fopen(文件名,打開方式或使用方式);
常州信息學(xué)院C語言課程組文件打開舉例例如:FILE*fp;fp=fopen(“d:\\a1.txt”,“r”);常州信息學(xué)院C語言課程組說明
1、打開d:盤根目錄下文件名為a1.txt的文件,打開方式“r”表示只讀。
2、fopen函數(shù)返回指向d:\a1.txt的文件指針,然后賦值給fp,fp->此文件,即fp與此文件關(guān)聯(lián)。
3、關(guān)于文件名要注意:文件名包含文件名.擴(kuò)展名;路徑要用“\\”表示。
常州信息學(xué)院C語言課程組說明4、關(guān)于打開方式:
(1)“r,w,a”:讀、寫、添加
(2)“b,t”:二進(jìn)制,文本文件。默認(rèn)為文本方式,即沒有b就是以文本方式打開文件。 (3)“+”:可讀寫
常州信息學(xué)院C語言課程組文件打開方式(使用方式)的說明
1、文件打開一定要檢查fopen函數(shù)的返回值。因?yàn)橛锌赡芪募荒苷4蜷_。不能正常打開時(shí)fopen函數(shù)返回NULL??梢杂孟旅娴男问綑z查:
if((fp=fopen(...))==NULL) {
printf(“erroropenfile\n”);exit(1); }
常州信息學(xué)院C語言課程組文件打開方式(使用方式)的說明2、“r”方式:只能從文件讀入數(shù)據(jù)而不能向文件寫入數(shù)據(jù)。該方式要求欲打開的文件已經(jīng)存在。3、“a”方式:在文件末尾添加數(shù)據(jù),而不刪除原來文件。該方式要求欲打開的文件已經(jīng)存在。
常州信息學(xué)院C語言課程組文件打開方式(使用方式)的說明4、“w”方式:只能向文件寫入數(shù)據(jù)而不能從文件讀入數(shù)據(jù)。如果文件不存在,創(chuàng)建文件,如果文件存在,原來文件被刪除,然后重新創(chuàng)建文件(相當(dāng)覆蓋原來文件)。
常州信息學(xué)院C語言課程組文件打開方式(使用方式)的說明5、“+”(“r+,w+,a+”):均為可讀、可寫。但是“r+”,“a+”要求文件已經(jīng)存在,“w+”無此要求;“r+”打開文件時(shí)文件指針指向文件開頭,“a+”打開文件時(shí)文件指針指向文件末尾。
常州信息學(xué)院C語言課程組文件打開方式(使用方式)的說明6、“b、t”:以二進(jìn)制或文本方式打開文件。默認(rèn)是文本方式,t可以省略。讀文本文件時(shí),將“回車”/“換行”轉(zhuǎn)換為一個(gè)“換行”;寫文本文件時(shí),將“換行”轉(zhuǎn)換為“回車/換行”。
常州信息學(xué)院C語言課程組文件打開方式(使用方式)的說明7、程序開始運(yùn)行時(shí),系統(tǒng)自動(dòng)打開三個(gè)標(biāo)準(zhǔn)文件:標(biāo)準(zhǔn)輸入,標(biāo)準(zhǔn)輸出,標(biāo)準(zhǔn)出錯(cuò)輸出。一般這三個(gè)文件對(duì)應(yīng)于終端(鍵盤、顯示器)。這三個(gè)文件不需要手工打開,就可以使用。標(biāo)準(zhǔn)文件:標(biāo)準(zhǔn)輸入,標(biāo)準(zhǔn)輸出,標(biāo)準(zhǔn)出錯(cuò)輸出對(duì)應(yīng)的文件指針是stdin,stdout,stderr。
常州信息學(xué)院C語言課程組文件的關(guān)閉(fclose函數(shù))
文件使用完畢后必須關(guān)閉,以避免數(shù)據(jù)丟失。 格式:
fclose(文件指針);
常州信息學(xué)院C語言課程組常用的文件讀寫函數(shù)
常州信息學(xué)院C語言課程組寫一個(gè)字符到磁盤文件
格式:fputc(ch,fp)功能:將字符ch(可以是字符表達(dá)式,字符常量、變量等)寫入fp所指向的文件。返回:輸出成功返回值-輸出的字符ch;輸出失敗-返回EOF(-1)。其它說明:每次寫入一個(gè)字符,文件位置指針自動(dòng)指向下一個(gè)字節(jié)。
常州信息學(xué)院C語言課程組應(yīng)用舉例例12-1: 從鍵盤輸入一行字符,寫入到文本文件string.txt中。(P.206)
常州信息學(xué)院C語言課程組常州信息學(xué)院C語言課程組從磁盤文件讀一個(gè)字符
格式:ch=fgetc(fp)功能:從fp所指向的文件讀一個(gè)字符,字符由函數(shù)返回。返回的字符可以賦值給ch,也可以直接參與表達(dá)式運(yùn)算。返回:輸入成功返回值-輸入的字符;遇到文件結(jié)束-返回EOF(-1)
常州信息學(xué)院C語言課程組從磁盤文件讀一個(gè)字符串
格式:char*fgets(char*str,intn,FILE*fp)l
功能:從fp所指向的文件讀n-1個(gè)字符,并將這些字符放到以str為起始地址的單元中。如果在讀入n-1個(gè)字符結(jié)束前遇到換行符或EOF,讀入結(jié)束。字符串讀入后最后加一個(gè)‘\0’字符。 返回:輸入成功返回值-輸入串的首地址;遇到文件結(jié)束或出錯(cuò)-返回NULL。
常州信息學(xué)院C語言課程組應(yīng)用舉例例12-3: 編制一個(gè)將文本文件中全部信息顯示到屏幕的程序(類似于dos的type命令,P.210)。使用fgets的例子。
常州信息學(xué)院C語言課程組常州信息學(xué)院C語言課程組寫一個(gè)字符串到磁盤文件
格式:fputs(char*str,FILE*fp)L 功能:向fp所指向的文件寫入以str為首地址的字符串。 返回:輸入成功返回值-0;出錯(cuò)-返回非0值。
常州信息學(xué)院C語言課程組應(yīng)用舉例例12-4: 在文本文件string.txt末尾添加若干行字符(P.210)。使用fputs的例子。
常州信息學(xué)院C語言課程組常州信息學(xué)院C語言課程組數(shù)據(jù)塊讀寫函數(shù)(一般用于二進(jìn)制文件讀寫)
從文件(特別是二進(jìn)制文件)讀寫一塊數(shù)據(jù)(如一個(gè)數(shù)組元素,一個(gè)結(jié)構(gòu)體變量的數(shù)據(jù)-記錄)使用數(shù)據(jù)塊讀寫函數(shù)非常方便。數(shù)據(jù)塊讀寫函數(shù)的調(diào)用形式為:int
fread(void*buffer,int
size,intcount,FILE*fp);
int
fwrite(void*buffer,int
size,intcount,FILE*fp);
常州信息學(xué)院C語言課程組參數(shù)說明(1)buffer是指針,對(duì)fread用于存放讀入數(shù)據(jù)的首地址;對(duì)fwrite是要輸出數(shù)據(jù)的首地址。(2)size是一個(gè)數(shù)據(jù)塊的字節(jié)數(shù)(每塊大小),count是要讀寫的數(shù)據(jù)塊塊數(shù)。(3)fp文件指針(4)fread、fwrite返回讀取/寫入的數(shù)據(jù)塊塊數(shù)。(正常情況=count)(5)以數(shù)據(jù)塊方式讀寫,文件通常以二進(jìn)制方式打開。
常州信息學(xué)院C語言課程組操作舉例例如:floatf[2];FILE*fp=fopen(“...”,”r”);fread(f,4,2,fp);/*或fread(f,sizeof(float),2,fp);*/常州信息學(xué)院C語言課程組應(yīng)用舉例例12-5: 從鍵盤輸入一批學(xué)生的數(shù)據(jù),然后把它們轉(zhuǎn)存到磁盤文件stud.dat中。P.211.
常州信息學(xué)院C語言課程組常州信息學(xué)院C語言課程組常州信息學(xué)院C語言課程組文件的定位
對(duì)文件的讀寫可以順序讀寫,也可以隨機(jī)讀寫。1、文件順序讀寫:從文件的開頭開始,依次讀寫數(shù)據(jù)。(從文件開頭讀寫直到文件尾部)2、文件隨機(jī)讀寫(文件定位讀寫):從文件的指定位置讀寫數(shù)據(jù)。3、文件位置指針:在文件的讀寫過程中,文件位置指針指出了文件的當(dāng)前讀寫位置(實(shí)際上是:下一步讀寫位置),每次讀寫后,文件位置指針自動(dòng)更新指向新的讀寫位置(實(shí)際上是:下一步讀寫位置)。 注意區(qū)分:文件位置指針,文件指針。
常州信息學(xué)院C語言課程組文件位置指針函數(shù)
rewind 重返文件頭函數(shù)
fseek
位置指針移動(dòng)函數(shù)
ftell
獲取當(dāng)前位置指針函數(shù)
常州信息學(xué)院C語言課程組示意圖常州信息學(xué)院C語言課程組rewind-重返文件頭函
功能:使文件位置指針重返文件的開頭。例12-7: 有一個(gè)文本文件,第一次使它顯示在屏幕上,第二次把它復(fù)制到另外一個(gè)文件中。
常州信息學(xué)院C語言課程組常州信息學(xué)院C語言課程組fseek-位置指針移動(dòng)函數(shù)
功能:移動(dòng)文件讀寫位置指針,以便文件的隨機(jī)讀寫。格式:fseek(FILE*fp,long
offset,intwhence);
常州信息學(xué)院C語言課程組參數(shù):常州信息學(xué)院C語言課程組舉例常州信息學(xué)院C語言課程組應(yīng)用實(shí)例例12-8: 編程讀出文件stu.dat中第三個(gè)學(xué)生的數(shù)據(jù)。(P.215)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年哈爾濱南崗區(qū)哈西社區(qū)衛(wèi)生服務(wù)中心招聘3人筆試考試備考題庫(kù)及答案解析
- 深度解析(2026)《GBT 26070-2010化合物半導(dǎo)體拋光晶片亞表面損傷的反射差分譜測(cè)試方法》
- 2025江蘇泰州市高港區(qū)胡莊鎮(zhèn)公益性崗位招聘2人模擬筆試試題及答案解析
- 2025年山東師范大學(xué)公開招聘人員(7名)備考筆試題庫(kù)及答案解析
- 2025嘉興海寧市交通投資控股集團(tuán)有限公司下屬公司12月招聘參考筆試題庫(kù)附答案解析
- 古希臘“閑暇”(Schole)概念的教育意涵-基于亞里士多德《政治學(xué)》第八卷
- 2025下半年武警江西總隊(duì)醫(yī)院社會(huì)招聘5人備考筆試試題及答案解析
- 2025年12月華僑大學(xué)化工學(xué)院藍(lán)志元教授團(tuán)隊(duì)招聘科研助理4人(福建)備考考試題庫(kù)及答案解析
- 2025云南昆明市官渡區(qū)北京八十學(xué)校招聘5人備考筆試試題及答案解析
- 2026湖南省氣象部門事業(yè)單位招聘應(yīng)屆畢業(yè)生13人(第二輪)(第2604號(hào))參考考試題庫(kù)及答案解析
- T-CNHC 4-2025 昌寧縣低質(zhì)低效茶園改造技術(shù)規(guī)程
- 雨課堂學(xué)堂云在線《人工智能原理》單元測(cè)試考核答案
- 區(qū)域經(jīng)濟(jì)空間結(jié)構(gòu)理論之增長(zhǎng)極理論
- 國(guó)開電大本科《人文英語4》機(jī)考總題庫(kù)
- 細(xì)胞存活曲線的推導(dǎo)王大獎(jiǎng)
- 2023年足球俱樂部試訓(xùn)個(gè)人簡(jiǎn)歷
- 小學(xué)英語Christmas圣誕節(jié)課件
- 體檢中心體檢軟件方案
- 60萬噸玉米深加工工程淀粉及味精生產(chǎn)項(xiàng)目總體試車方案
- 師德師風(fēng)學(xué)生問卷調(diào)查表
- 廠區(qū)道路工程的施工組織設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論