版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第十二章文件C文件的概念文件指針、文件的打開與關(guān)閉文件的讀寫、文件的定位12.1文件的概念文件:存儲(chǔ)在外部介質(zhì)上的數(shù)據(jù)的集合。操作系統(tǒng)對(duì)存儲(chǔ)在外部介質(zhì)的數(shù)據(jù)進(jìn)行是以文件為單位的。讀取磁盤數(shù)據(jù):找到磁盤文件,然后讀取數(shù)據(jù)。保存數(shù)據(jù)到磁盤:打開(建立)一個(gè)文件,然后保存數(shù)據(jù)。文件按組織分類:ASCII文件和二進(jìn)制文件。ASCII文件:文本文件,每一個(gè)字節(jié)用對(duì)應(yīng)的ASCII保存。例如:-1000用ASCII文件存盤形式7749484848五個(gè)字節(jié)表示。二進(jìn)制文件:按內(nèi)存中存儲(chǔ)數(shù)據(jù)的形式原樣輸出到文件中。例如-1000在內(nèi)存中用兩個(gè)字節(jié)表示(補(bǔ)碼表示)則,在文件中保存為:253241111110000011000字節(jié)流或二進(jìn)制流:在C語(yǔ)言中,保存到磁盤上的文件或從磁盤文件讀取數(shù)據(jù)都被看作一連串的字節(jié),而不考慮記錄的界限—流式文件。對(duì)文件的處理方式:緩沖文件系統(tǒng)和非緩沖文件系統(tǒng)。緩沖文件系統(tǒng):系統(tǒng)自動(dòng)在內(nèi)存中為每個(gè)正在使用的文件名開辟一個(gè)緩沖區(qū),讀寫文件的數(shù)據(jù)首先送到內(nèi)存緩沖區(qū),然后再到內(nèi)存或磁盤。程序數(shù)據(jù)寫緩沖區(qū)讀緩沖區(qū)磁盤
非緩沖區(qū)文件:系統(tǒng)不自動(dòng)開辟緩沖區(qū),而是由程序?yàn)槊總€(gè)文件設(shè)定一個(gè)緩沖區(qū)。在UNIX系統(tǒng)中,一般:用緩沖文件系統(tǒng)處理文本(ASCII)文件用非緩沖文件系統(tǒng)處理二進(jìn)制文件。在C語(yǔ)言中,所有的文件操作都通過函數(shù)來實(shí)現(xiàn)。12.2文件類型指針緩沖文件系統(tǒng)中,關(guān)鍵的概念是“文件指針”,每個(gè)正在使用的文件都在內(nèi)存中開辟一個(gè)區(qū)域,用來存放文件的有關(guān)信息。文件指針:FILE,在stdio.h中。
tyoedefstruct{int_fd;/*文件號(hào)*/
int_cleft;/*剩下的字符數(shù)*/
int_mode;/*操作模式*/
char*_nextc;/*下一個(gè)字符的位置*/
char*_buff;/*文件緩沖區(qū)的位置*/}FILE;
定義文件指針:FILE*fp;
文件指針的用途:
保存文件號(hào);文件緩沖區(qū)的位置文件讀寫的位置文件的打開模式等等。12.3文件的打開與關(guān)閉文件的打開:FILE*fp;fp=fopen(文件名,使用方式);其中:文件名:包含盤符、路徑和文件名,字符串。例如:“C:\\program\\Temp\\errorp.err”思考:為什么用\\?使用方式:以什么方式使用打開的文件,為字符串。文件使用方式
文件使用方式含義說明“r”只讀為輸入打開一個(gè)文件“w”只寫為輸出打開一個(gè)文件“a”追加打開文本文件尾部追加數(shù)據(jù)“rb”只讀為輸入打開一個(gè)二進(jìn)制文件“wb”只寫為輸出打開一個(gè)二進(jìn)制文件“ab”追加打開二進(jìn)制文件尾部追加數(shù)據(jù)“r+”讀寫為讀/寫打開一個(gè)文件“w+”讀寫為讀/寫建立一個(gè)文件“a+”讀寫為讀/寫打開一個(gè)文件“rb+”讀寫為讀/寫打開一個(gè)二進(jìn)制文件“wb+”讀寫為讀/寫建立一個(gè)新二進(jìn)制文件“ab+”讀寫為讀/寫打開一個(gè)二進(jìn)制文件例如:FILE*fp;fp=fopen(“C:\\program\\Temp\\errorp.err”,“r+”);
以讀/寫的方式,打開一個(gè)c:盤上,路徑\program\temp上的文本文件errorp.err。如果文件打開成功,則返回該文件的指針,否則返回一個(gè)空指針??罩羔樤诔绦虻暮竺婢蜔o(wú)法對(duì)文件進(jìn)行操作。因此,必須判斷文件打開是否成功,常用如下語(yǔ)句:if((fp=fopen(“file1”,”wb+”))==NULL){printf(“Can’topenthefile\n”);exit(0);}
在程序運(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ò)輸出。文件關(guān)閉操作:fclose(文件指針);例如:
fclose(fp);12.4文件的讀寫
fputc()函數(shù),格式
fputc(ch,fp);把一個(gè)字符ch寫到有文件指針fp指定的磁盤文件上。
fgetc()函數(shù),格式ch=fgetc(fp);從文件fp中讀取一個(gè)字符,賦給字符變量ch。ex12_01,ex12_02fread()和fwrite()函數(shù)格式:fread(buffer,size,count,fp);fwrite(buffer,size,count,fp);說明:buffer—是一個(gè)指針。size—要讀(寫)的字節(jié)數(shù)。count—要讀(寫)的次數(shù)。fp——文件指針。例如:ex12-03,ex12_031fprintf()和fscanf()函數(shù):格式:fprintf(文件指針,格式串,輸出列表);fscanf(文件指針,格式串,輸入列表);說明:文件指針:一個(gè)已經(jīng)打開的文件指針。格式串、輸出(入)列表:同第三章。例子:ex12-04putw()和getw()putw(數(shù)據(jù),文件指針);變量=getw(文件指針);
putc()和getc()函數(shù)putc(字符,文件指針);變量=getc(文件指針);fputs()和fgets()函數(shù)fputs(串,文件指針)fgets(buffer,字符數(shù),文件指針)12.5文件定位概念:文件一旦打開,就有一個(gè)指針,指向當(dāng)前正在讀寫的位置——位置指針。每讀/寫一個(gè)字節(jié),該指針自動(dòng)向后移動(dòng)一個(gè)字節(jié)位置。文件的操作中,可以直接移動(dòng)該指針到給定的位置——文件定位。常見函數(shù):rewind()、fseek()、ftell()rewind()函數(shù):不管目前文件位置指針指向什么位置,rewind()函數(shù)直接把位置指針置為文件的開頭。格式:
rewind(文件指針);該函數(shù)沒有返回值。fseek()函數(shù):格式:
fseek(文件指針,偏移量,起始位置)其中:起始位置:SEEK_SET0
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)境咨詢服務(wù)人員筆試題庫(kù)及解析
- 冰面出租合同范本
- 分包協(xié)議解除合同
- 加盟園保密協(xié)議書
- 勞務(wù)演出協(xié)議合同
- 勞工合同勞動(dòng)協(xié)議
- Continuationwriting教學(xué)設(shè)計(jì)高考英語(yǔ)一輪復(fù)習(xí)
- 合同前的合作協(xié)議
- 合同終止簽收協(xié)議
- 合同遷移三方協(xié)議
- 大學(xué)生創(chuàng)新創(chuàng)業(yè)基礎(chǔ)知到章節(jié)答案智慧樹2023年齊齊哈爾大學(xué)
- 小學(xué)四年級(jí)語(yǔ)文上冊(cè)期末復(fù)習(xí)教案教學(xué)設(shè)計(jì)
- GB/T 8539-2000齒輪材料及熱處理質(zhì)量檢驗(yàn)的一般規(guī)定
- GB/T 24118-2009紡織品線跡型式分類和術(shù)語(yǔ)
- GA/T 1556-2019道路交通執(zhí)法人體血液采集技術(shù)規(guī)范
- GA/T 1132-2014車輛出入口電動(dòng)欄桿機(jī)技術(shù)要求
- 三角函數(shù)的疊加之輔助角公式【公開課教學(xué)課件】
- 2023年北京市朝陽(yáng)區(qū)城管協(xié)管員招聘筆試模擬試題及答案解析
- 以此為主GS-操作手冊(cè)(中文簡(jiǎn)體) 含精度檢驗(yàn)表200807
- 循證護(hù)理問題的提出
- 中長(zhǎng)跑中長(zhǎng)跑的途中跑技術(shù)教案
評(píng)論
0/150
提交評(píng)論