




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 C C語(yǔ)言文件的概念語(yǔ)言文件的概念 文件指針文件指針 文件的打開(kāi)與封閉文件的打開(kāi)與封閉 文件的讀寫(xiě)函數(shù)文件的讀寫(xiě)函數(shù) 文件的定位文件的定位第十二章第十二章 文件文件文本文件文本文件:采納采納ACSII代碼存儲(chǔ)方式代碼存儲(chǔ)方式,每個(gè)字符占一個(gè)字節(jié)每個(gè)字符占一個(gè)字節(jié),存儲(chǔ)其對(duì)應(yīng)的存儲(chǔ)其對(duì)應(yīng)的ASCII碼碼.二進(jìn)制文件二進(jìn)制文件:采納采納C規(guī)定的內(nèi)存信息的存儲(chǔ)方式規(guī)定的內(nèi)存信息的存儲(chǔ)方式,似似:整數(shù)整數(shù)10000,在內(nèi)存中占在內(nèi)存中占2個(gè)字節(jié)個(gè)字節(jié),如果按二進(jìn)制形如果按二進(jìn)制形式存儲(chǔ)式存儲(chǔ),在磁盤(pán)上也占在磁盤(pán)上也占2個(gè)字節(jié)個(gè)字節(jié).00100111 00010000一、一、C C語(yǔ)言文件語(yǔ)言文件文件
2、文件存儲(chǔ)在外部介質(zhì)(似磁盤(pán))上的信息的集合存儲(chǔ)在外部介質(zhì)(似磁盤(pán))上的信息的集合.如果按文件內(nèi)容分割如果按文件內(nèi)容分割:源程序文件、信息文件源程序文件、信息文件如果按組織形式分割如果按組織形式分割:文本文件和二進(jìn)制文件文本文件和二進(jìn)制文件 對(duì)每個(gè)正在使用的文件對(duì)每個(gè)正在使用的文件, C系統(tǒng)都在內(nèi)存中為其開(kāi)發(fā)系統(tǒng)都在內(nèi)存中為其開(kāi)發(fā)了一個(gè)緩沖存儲(chǔ)區(qū)了一個(gè)緩沖存儲(chǔ)區(qū).用來(lái)存放文件的信息用來(lái)存放文件的信息.特點(diǎn)特點(diǎn):文件中存放的根基上信息文件中存放的根基上信息,這些信息能夠恒久這些信息能夠恒久保留保留,能夠隨時(shí)存取能夠隨時(shí)存取. 信息文件信息文件 文件的根基操縱文件的根基操縱“寫(xiě)寫(xiě)”文件文件: :將信
3、息從內(nèi)存輸出到磁盤(pán)文件將信息從內(nèi)存輸出到磁盤(pán)文件“讀讀”文件文件: :從已創(chuàng)站的信息文件中將所要的從已創(chuàng)站的信息文件中將所要的信息輸入到內(nèi)存信息輸入到內(nèi)存 二、文件指針二、文件指針在緩沖文件系統(tǒng)中在緩沖文件系統(tǒng)中,文件的信息保留在一個(gè)名為文件的信息保留在一個(gè)名為FILE的的結(jié)構(gòu)體類(lèi)型的變量中結(jié)構(gòu)體類(lèi)型的變量中.該結(jié)構(gòu)體類(lèi)型由系統(tǒng)定義該結(jié)構(gòu)體類(lèi)型由系統(tǒng)定義.定義文件型指針變量定義文件型指針變量:FILE * 指針變量名指針變量名似似: FILE * fp;fp是一個(gè)指向是一個(gè)指向FILE類(lèi)型結(jié)構(gòu)體的指針變量類(lèi)型結(jié)構(gòu)體的指針變量.C規(guī)定了三個(gè)規(guī)格設(shè)備文件指針規(guī)定了三個(gè)規(guī)格設(shè)備文件指針,無(wú)需再定義無(wú)
4、需再定義. stdin: 指向規(guī)格輸入文件(鍵盤(pán))指向規(guī)格輸入文件(鍵盤(pán)) stdout:指向規(guī)格輸出文件(表現(xiàn)器)指向規(guī)格輸出文件(表現(xiàn)器) stderr:指向規(guī)格錯(cuò)誤輸出文件(表現(xiàn)器)指向規(guī)格錯(cuò)誤輸出文件(表現(xiàn)器)三、打開(kāi)、封閉和探測(cè)文件三、打開(kāi)、封閉和探測(cè)文件1、打開(kāi)文件(、打開(kāi)文件(fopen 函數(shù))函數(shù))FILE *fp;fp=fopen(文件名文件名,文件的使用方式文件的使用方式)fopen函數(shù)是一個(gè)返回指針值的函數(shù)函數(shù)是一個(gè)返回指針值的函數(shù).當(dāng)返回值是當(dāng)返回值是NULL時(shí)時(shí),示意無(wú)法打開(kāi)該文件示意無(wú)法打開(kāi)該文件常采納下列方式打開(kāi)一個(gè)文件常采納下列方式打開(kāi)一個(gè)文件:if (fp=f
5、open(”file1”,”r”)=NULL) printf(”cant open this file n”); exit(0); * 封閉文件函數(shù)封閉文件函數(shù) * 表12.1 文件的使用方式使使用用方方式式含含義義功功能能r r只只讀讀為輸入打開(kāi)為輸入打開(kāi)一個(gè)文本文一個(gè)文本文件件w w只只寫(xiě)寫(xiě)為輸出打開(kāi)為輸出打開(kāi)一個(gè)文本文一個(gè)文本文件件a a追追加加在文本文件在文本文件的末尾追加的末尾追加信息信息r rb b只只讀讀為輸入打開(kāi)為輸入打開(kāi)一個(gè)二進(jìn)制一個(gè)二進(jìn)制文件文件w wb b只只寫(xiě)寫(xiě)為輸出打開(kāi)為輸出打開(kāi)一個(gè)二進(jìn)制一個(gè)二進(jìn)制文件文件l1、探測(cè)文件是否結(jié)束函數(shù)(、探測(cè)文件是否結(jié)束函數(shù)(feof(
6、)函數(shù))函數(shù))l標(biāo)準(zhǔn)標(biāo)準(zhǔn):feof(fp)l功能功能:用來(lái)檢驗(yàn)用來(lái)檢驗(yàn)fp所指向的文件當(dāng)前狀態(tài)是否所指向的文件當(dāng)前狀態(tài)是否“文件結(jié)束文件結(jié)束”.似果是文件結(jié)束似果是文件結(jié)束,函數(shù)函數(shù)feof(fp)的值的值為非為非0值值(真真),否那么為否那么為0(假假).l2、探測(cè)錯(cuò)誤函數(shù)(、探測(cè)錯(cuò)誤函數(shù)(ferror()函數(shù))函數(shù))l標(biāo)準(zhǔn)標(biāo)準(zhǔn): ferror(fp)l功能功能:探測(cè)對(duì)文件履行操縱時(shí)是否產(chǎn)生了錯(cuò)誤探測(cè)對(duì)文件履行操縱時(shí)是否產(chǎn)生了錯(cuò)誤,返返回值為回值為0,示意未犯錯(cuò)示意未犯錯(cuò),非非0值值,示意犯錯(cuò)示意犯錯(cuò).2、封閉文件(、封閉文件(fclose函數(shù))函數(shù))fclose(文件指針文件指針)l3、排
7、除錯(cuò)誤標(biāo)記和文件結(jié)束標(biāo)記函數(shù)、排除錯(cuò)誤標(biāo)記和文件結(jié)束標(biāo)記函數(shù)(clearerr()函數(shù))函數(shù))l標(biāo)準(zhǔn)標(biāo)準(zhǔn): clearerr(fp)l功能功能:排除文件犯錯(cuò)標(biāo)記和結(jié)束標(biāo)記排除文件犯錯(cuò)標(biāo)記和結(jié)束標(biāo)記,使他們的使他們的值為值為0.四、文件的輸入、輸出四、文件的輸入、輸出1、fputc函數(shù)和函數(shù)和fgetc函數(shù)函數(shù)(1)fputc函數(shù)函數(shù):把一個(gè)字符寫(xiě)到磁盤(pán)上把一個(gè)字符寫(xiě)到磁盤(pán)上.fputc(ch,fp);ch:為待輸出的字符為待輸出的字符fputc函數(shù)的返回值函數(shù)的返回值:當(dāng)輸出順?biāo)鞎r(shí)為當(dāng)輸出順?biāo)鞎r(shí)為ch的值的值 當(dāng)輸出不順?biāo)鞎r(shí)為當(dāng)輸出不順?biāo)鞎r(shí)為EOF即即-1.(2)fgetc函數(shù)函數(shù):從指定文件
8、中讀入一個(gè)字符從指定文件中讀入一個(gè)字符.ch=fgetc(fp);2、fputs 函數(shù)和函數(shù)和 fgets 函數(shù)函數(shù)(1)fputs函數(shù)函數(shù):把一個(gè)字符串寫(xiě)到磁盤(pán)文把一個(gè)字符串寫(xiě)到磁盤(pán)文件上件上.fputs(str, fp); str:為待輸出的字符串為待輸出的字符串,能夠是字符串常量、指能夠是字符串常量、指向字符串的指針變量或存放字符串的字符向字符串的指針變量或存放字符串的字符數(shù)組名數(shù)組名fputs函數(shù)的返回值函數(shù)的返回值:當(dāng)輸出順?biāo)鞎r(shí)為正整數(shù)當(dāng)輸出順?biāo)鞎r(shí)為正整數(shù) 當(dāng)輸出不順?biāo)鞎r(shí)為當(dāng)輸出不順?biāo)鞎r(shí)為EOF即即-1.(2)fgets函數(shù)函數(shù):從指定文件中讀入從指定文件中讀入n-1個(gè)字個(gè)字符符fg
9、ets(str, n, fp); str: 存放字符串的首地址存放字符串的首地址n:字符串的長(zhǎng)度字符串的長(zhǎng)度功能功能:從文件中讀入從文件中讀入n-1個(gè)字符放入個(gè)字符放入str中中注重注重:似果在未讀滿似果在未讀滿n-1個(gè)字符時(shí)個(gè)字符時(shí),已讀到已讀到一個(gè)換行符或一個(gè)一個(gè)換行符或一個(gè)EOF,那么結(jié)束本次操那么結(jié)束本次操縱縱,讀入結(jié)束后系統(tǒng)自動(dòng)參加讀入結(jié)束后系統(tǒng)自動(dòng)參加0.3、fprintf、fscanf函數(shù)函數(shù):讀寫(xiě)文本文件讀寫(xiě)文本文件fscanf(文件指針文件指針,標(biāo)準(zhǔn)字符串標(biāo)準(zhǔn)字符串,輸入表列輸入表列);fprintf(文件指針文件指針,標(biāo)準(zhǔn)字符串標(biāo)準(zhǔn)字符串,輸出表列輸出表列);似似: int
10、 a3; fscanf( fp, ”%d%d%d,&a0,&a1,&a2); fprintf( fp, ”%d,%d,%d”,a0,a1,a2);例例:一元二次方程的根一元二次方程的根#include stdio.h#include math.hmain() FILE *fp; float a,b,c,x1,x2; fp=fopen( file.dat, w ); scanf (%f%f%f,&a,&b,&c); x1=(-b+sqrt(b*b-4*a*c)(2*a); x2=(-b-sqrt(b*b-4*a*c)(2*a); fprintf(f
11、p,x1=%8.2fn x2=%8.2fn,x1,x2);4、fread、fwrite函數(shù)函數(shù):讀寫(xiě)二進(jìn)制文件讀寫(xiě)二進(jìn)制文件fread(buffer,size,count,fp););fwrite(buffer,size,count,fp););其中其中:buffer:讀入或輸出信息的指針讀入或輸出信息的指針 size :一次讀寫(xiě)的字節(jié)數(shù)一次讀寫(xiě)的字節(jié)數(shù) count :大小為大小為size個(gè)字節(jié)的信息項(xiàng)的個(gè)數(shù)個(gè)字節(jié)的信息項(xiàng)的個(gè)數(shù) fp :文件指針文件指針?biāo)扑? int a3; fread(a,sizeof(int),3,fin);); fwrite(a,sizeof(int),3,fp););
12、五、五、 文件的定位文件的定位 文件中有一個(gè)位置指針文件中有一個(gè)位置指針, ,指向當(dāng)前讀寫(xiě)的指向當(dāng)前讀寫(xiě)的位置位置. . 次序讀寫(xiě)次序讀寫(xiě): :每次讀寫(xiě)一個(gè)字符后每次讀寫(xiě)一個(gè)字符后, ,位置指位置指針自動(dòng)移動(dòng)指向下一個(gè)字符針自動(dòng)移動(dòng)指向下一個(gè)字符. .隨機(jī)讀寫(xiě)隨機(jī)讀寫(xiě):是指讀寫(xiě)完上一個(gè)字符是指讀寫(xiě)完上一個(gè)字符(字節(jié)字節(jié))后后,同同時(shí)不必然要讀寫(xiě)其后續(xù)的字符時(shí)不必然要讀寫(xiě)其后續(xù)的字符(字節(jié)字節(jié)),而能夠而能夠讀寫(xiě)文件中隨意率性所需的字符讀寫(xiě)文件中隨意率性所需的字符(字節(jié)字節(jié)).(1)rewind函數(shù)函數(shù) 作用是使位置指針再一次返回文件的開(kāi)頭作用是使位置指針再一次返回文件的開(kāi)頭.此函數(shù)沒(méi)有返回值此
13、函數(shù)沒(méi)有返回值. 例似例似:rewind(fp);(2)fseek函數(shù)函數(shù) fseek(文件類(lèi)型指針文件類(lèi)型指針,位移量位移量,起始點(diǎn)起始點(diǎn)) 起始點(diǎn)起始點(diǎn): 用用0、1或或2代替代替,0代表代表“文件最文件最先先”,1為為“當(dāng)前位置當(dāng)前位置”,2為為“文件末尾文件末尾”. 位移量位移量: 指以指以“起始點(diǎn)起始點(diǎn)”為基點(diǎn)為基點(diǎn),向前移動(dòng)向前移動(dòng)的字節(jié)數(shù)的字節(jié)數(shù). 大多數(shù)大多數(shù)C版本要求位移量是版本要求位移量是long型信息型信息. 例似例似: fseek(fp,100L,0); 將位置指針移到離文件頭將位置指針移到離文件頭100個(gè)字節(jié)處個(gè)字節(jié)處 fseek(fp,50L,1); 將位置指針移到離當(dāng)前位置將位置指針移到離當(dāng)前位置50個(gè)字節(jié)處個(gè)字節(jié)處 fseek(fp,-10L,2); 將位置指針從文件末尾處向后退將位置指針從文件末尾處向后退10個(gè)字節(jié)個(gè)字節(jié) (3) ftell函數(shù)函數(shù) fte
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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《江寧建筑勞務(wù)合同》
- 2025自然人借款合同模板
- 2025家庭電路改造合同協(xié)議書(shū)
- 2025年建筑用木料及加工木材組件項(xiàng)目合作計(jì)劃書(shū)
- 2025物業(yè)管理簡(jiǎn)易勞動(dòng)合同說(shuō)明及范本
- 2025廣告策劃委托合同樣本格式
- 2025附條件購(gòu)買(mǎi)合同范本
- 2025年鉻系鐵合金項(xiàng)目合作計(jì)劃書(shū)
- 2025年防洪設(shè)施管理服務(wù)項(xiàng)目建議書(shū)
- 2025辦公家具買(mǎi)賣(mài)合同范本
- GB/T 24894-2025動(dòng)植物油脂甘三酯分子2-位脂肪酸組分的測(cè)定
- 2025-2030中國(guó)北京市寫(xiě)字樓租售行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及發(fā)展前景預(yù)測(cè)報(bào)告
- 乙型肝炎病人的健康教育
- 人教版道德與法治八年級(jí)下冊(cè)6.3《國(guó)家司法機(jī)關(guān)》聽(tīng)課評(píng)課記錄
- 管理溝通知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋華東交通大學(xué)
- 分離式蜂蜜飲品生產(chǎn)線項(xiàng)目可行性研究報(bào)告寫(xiě)作模板-備案審批
- 2025年春新人教版數(shù)學(xué)一年級(jí)下冊(cè)課件 歡樂(lè)購(gòu)物街 2.買(mǎi)賣(mài)我做主
- 2025年廣東省煙草專(zhuān)賣(mài)局招聘筆試參考題庫(kù)含答案解析
- GB/T 27697-2024立式油壓千斤頂
- 《健康成年人身體活動(dòng)能量消耗參考值》
- GB/T 44967-2024飼料用酶制劑通則
評(píng)論
0/150
提交評(píng)論