




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1 第第2323講講 文件的打開(kāi)和讀寫文件的打開(kāi)和讀寫 教學(xué)目的與要求:教學(xué)目的與要求: 掌握文件的打開(kāi)和關(guān)閉掌握文件的打開(kāi)和關(guān)閉 掌握文件的字符格式的輸入和輸出掌握文件的字符格式的輸入和輸出 教學(xué)內(nèi)容提要:教學(xué)內(nèi)容提要: 1 1、文件的概述、文件的概述 2 2、文件的打開(kāi)和關(guān)閉、文件的打開(kāi)和關(guān)閉 3 3、文件的順序讀寫、文件的順序讀寫 教學(xué)重點(diǎn):文件的打開(kāi)和關(guān)閉、文件的字符格式的輸入輸出教學(xué)重點(diǎn):文件的打開(kāi)和關(guān)閉、文件的字符格式的輸入輸出 教學(xué)難點(diǎn):文件的字符格式的輸入輸出教學(xué)難點(diǎn):文件的字符格式的輸入輸出 教學(xué)方法:多媒體教學(xué)教學(xué)方法:多媒體教學(xué) 教學(xué)進(jìn)度:教學(xué)進(jìn)度:P275291P275
2、291 教學(xué)過(guò)程:教學(xué)過(guò)程: 2 一、一、 C C文件概述文件概述 l文件:存儲(chǔ)在外部介質(zhì)上數(shù)據(jù)的集合文件:存儲(chǔ)在外部介質(zhì)上數(shù)據(jù)的集合,是操作系統(tǒng)是操作系統(tǒng) 數(shù)據(jù)管理的單位數(shù)據(jù)管理的單位 文件分類:文件分類: 按數(shù)據(jù)的組織形式:按數(shù)據(jù)的組織形式: 文本文件文本文件: ASCII文件,每個(gè)字節(jié)存放一個(gè)字符的文件,每個(gè)字節(jié)存放一個(gè)字符的ASCII碼碼 二進(jìn)制文件二進(jìn)制文件:數(shù)據(jù)按其在內(nèi)存中的存儲(chǔ)形式原樣存放:數(shù)據(jù)按其在內(nèi)存中的存儲(chǔ)形式原樣存放 1、文件的概念、文件的概念 3 如如 int型數(shù)型數(shù)10000 0010011100010000 內(nèi)存存儲(chǔ)形式內(nèi)存存儲(chǔ)形式 0010011100010000
3、 二進(jìn)制形式二進(jìn)制形式 0011000100110000001100000011000000110000 ASCII形式形式 文本文件特點(diǎn)文本文件特點(diǎn): : 存儲(chǔ)量大、速度慢、便于對(duì)字符操作存儲(chǔ)量大、速度慢、便于對(duì)字符操作 二進(jìn)制文件特點(diǎn)二進(jìn)制文件特點(diǎn): : 存儲(chǔ)量小、速度快、便于存放中間結(jié)果存儲(chǔ)量小、速度快、便于存放中間結(jié)果 4 (1 1)文件結(jié)構(gòu)體)文件結(jié)構(gòu)體FILEFILE l 緩沖文件系統(tǒng)為每個(gè)正使用的文件在內(nèi)存開(kāi)辟文件信緩沖文件系統(tǒng)為每個(gè)正使用的文件在內(nèi)存開(kāi)辟文件信 息區(qū)息區(qū) l文件信息用系統(tǒng)定義的名為文件信息用系統(tǒng)定義的名為FILE的結(jié)構(gòu)體描述的結(jié)構(gòu)體描述 lFILE定義在定義在s
4、tdio.h中中 typedef struct int _fd; /文件號(hào)文件號(hào) int _cleft; /緩沖區(qū)中剩下的字符數(shù)緩沖區(qū)中剩下的字符數(shù) int _mode; /文件操作方式文件操作方式 char *_next; /文件當(dāng)前讀寫位置文件當(dāng)前讀寫位置 char *_buff; /文件緩沖區(qū)位置文件緩沖區(qū)位置 FILE; 2 2 文件類型指針文件類型指針 5 l指針變量說(shuō)明:指針變量說(shuō)明: FILE *fp; l用法:用法: l文件打開(kāi)文件打開(kāi)時(shí),系統(tǒng)時(shí),系統(tǒng)自動(dòng)自動(dòng)建立文件結(jié)構(gòu)體,并把指向它的指建立文件結(jié)構(gòu)體,并把指向它的指 針?lè)祷貋?lái),程序通過(guò)這個(gè)指針獲得文件信息針?lè)祷貋?lái),程序通過(guò)這
5、個(gè)指針獲得文件信息,訪問(wèn)文件訪問(wèn)文件 l文件關(guān)閉文件關(guān)閉后,它的文件結(jié)構(gòu)體被釋放后,它的文件結(jié)構(gòu)體被釋放 文件名文件名 文件使用文件使用 方式方式 文件類型指針文件類型指針 C程序程序 操作系統(tǒng)操作系統(tǒng) 磁盤磁盤 (2 2)文件類型指針)文件類型指針 6 fp=fopen(文件名,使用文件方式);文件名,使用文件方式); 1 1、文件的打開(kāi)、文件的打開(kāi)fopenfopen 功能:按指定方式打開(kāi)文件功能:按指定方式打開(kāi)文件 返值:正常打開(kāi),為指向文件結(jié)構(gòu)體的指針;打開(kāi)失敗,返值:正常打開(kāi),為指向文件結(jié)構(gòu)體的指針;打開(kāi)失敗, 為為NULL 7 例如:例如: fp=fopen(”A1”,”r”) 它
6、表示:它表示: 要打開(kāi)名字為要打開(kāi)名字為A1的文件,使用文件方式的文件,使用文件方式 為為“讀讀”,fp指向指向A1文件。文件。 例例 FILE *fp; char *filename=“c:fengyibkctest.dat” fp= fopen(filename,”r”); 例例 FILE *fp; fp= fopen (“c:fengyibkctest.dat”,”r”); 8 “r” (只讀)(只讀) 為輸入打開(kāi)一個(gè)文本文件為輸入打開(kāi)一個(gè)文本文件 “w” (只寫)(只寫) 為輸出打開(kāi)一個(gè)文本文件為輸出打開(kāi)一個(gè)文本文件 “a” (追加)(追加) 向文本文件尾增加數(shù)據(jù)向文本文件尾增加數(shù)據(jù)
7、“rb” (只讀)(只讀) 為輸入打開(kāi)一個(gè)二進(jìn)制文件為輸入打開(kāi)一個(gè)二進(jìn)制文件 “wb” (只寫)(只寫) 為輸出打開(kāi)一個(gè)二進(jìn)制文件為輸出打開(kāi)一個(gè)二進(jìn)制文件 “ab” (追加)(追加) 向二進(jìn)制文件尾增加數(shù)據(jù)向二進(jìn)制文件尾增加數(shù)據(jù) “r+” (讀寫)(讀寫) 為讀為讀/寫打開(kāi)一個(gè)文本文件寫打開(kāi)一個(gè)文本文件 “w+” (讀寫)為讀(讀寫)為讀/寫建立一個(gè)新的文本文件寫建立一個(gè)新的文本文件 “a+” (讀寫)為讀(讀寫)為讀/寫打開(kāi)一個(gè)文本文件寫打開(kāi)一個(gè)文本文件 “rb+” (讀寫)為讀(讀寫)為讀/寫打開(kāi)一個(gè)二進(jìn)制文件寫打開(kāi)一個(gè)二進(jìn)制文件 “wb+” (讀寫)(讀寫) 為讀為讀/寫建立一個(gè)新的二進(jìn)
8、制文寫建立一個(gè)新的二進(jìn)制文 件件 “ab+” (讀寫)(讀寫) 為讀為讀/寫打開(kāi)一個(gè)二進(jìn)制文件寫打開(kāi)一個(gè)二進(jìn)制文件 (2)、)、文件打開(kāi)方式參數(shù)文件打開(kāi)方式參數(shù) 9 (3)、)、說(shuō)明說(shuō)明: 用用“r”方式打開(kāi)的文件應(yīng)該已經(jīng)存在;方式打開(kāi)的文件應(yīng)該已經(jīng)存在; 用用“w”方式打開(kāi)的文件,如果不存在該文件,則新建立方式打開(kāi)的文件,如果不存在該文件,則新建立 一個(gè),如果存在該文件,則在打開(kāi)時(shí)將該文件刪去一個(gè),如果存在該文件,則在打開(kāi)時(shí)將該文件刪去,然后重新然后重新 建立一個(gè)新文件;建立一個(gè)新文件; 如果希望向文件末尾添加新的數(shù)據(jù)(不希望刪除原有數(shù)如果希望向文件末尾添加新的數(shù)據(jù)(不希望刪除原有數(shù) 據(jù)),
9、則應(yīng)該用據(jù)),則應(yīng)該用“a”方式打開(kāi);方式打開(kāi); 用用“r+”、”w+”、”a+”方式打開(kāi)的文件可以用來(lái)輸入和方式打開(kāi)的文件可以用來(lái)輸入和 輸出數(shù)據(jù);輸出數(shù)據(jù); 如果不能實(shí)現(xiàn)如果不能實(shí)現(xiàn)“打開(kāi)打開(kāi)”的任務(wù),的任務(wù), fopen函數(shù)的函數(shù)的返回值是一返回值是一 個(gè)個(gè)NULL空指針??罩羔?。 10 因此為增強(qiáng)程序的可靠性,常用下面的方法打開(kāi)一個(gè)文件:因此為增強(qiáng)程序的可靠性,常用下面的方法打開(kāi)一個(gè)文件: if(fp=fopen(文件名文件名,操作方式操作方式)=NULL) printf(can not open this filen); exit(0); 例例 文件打開(kāi)與測(cè)試文件打開(kāi)與測(cè)試 FILE
10、 *fp; fp=fopen(“aa.c”,“w”); if(fp=NULL) printf(“File open error!n”); exit(0); 11 l作用作用:使文件指針變量與文件使文件指針變量與文件“脫鉤脫鉤”,釋放文件結(jié)構(gòu),釋放文件結(jié)構(gòu) 體和文件指針體和文件指針 l格式格式: fclose(文件指針);(文件指針); 功能:關(guān)閉文件指向的文件功能:關(guān)閉文件指向的文件 返值:正常關(guān)閉為返值:正常關(guān)閉為0;出錯(cuò)時(shí)出錯(cuò)時(shí),非非0 2 2、文件關(guān)閉、文件關(guān)閉fclosefclose 12 1、字符、字符I/O:fputc與與fgetc lfputc l形式:形式:fputc(ch,f
11、p); l功能:將功能:將ch的值輸出到的值輸出到fp所指向的文件中去,同所指向的文件中去,同 時(shí)將讀寫位置指針向前移動(dòng)時(shí)將讀寫位置指針向前移動(dòng)1個(gè)字節(jié)(即指向下一個(gè)字節(jié)(即指向下一 個(gè)寫入位置)。個(gè)寫入位置)。 l返值:正常,返回返值:正常,返回ch;出錯(cuò),為出錯(cuò),為EOF fgetc 形式:形式:ch=fgetc(fp); 功能:功能:從從“文件指針文件指針”所指向的文件中,讀入一個(gè)所指向的文件中,讀入一個(gè) 字字 符,同時(shí)將讀寫位置指針向前移動(dòng)符,同時(shí)將讀寫位置指針向前移動(dòng)1個(gè)字節(jié)個(gè)字節(jié) (即指向下一個(gè)字符)。(即指向下一個(gè)字符)。 返值:正常,返回讀到的代碼值返值:正常,返回讀到的代碼值
12、;讀到文件讀到文件 尾或出錯(cuò)為尾或出錯(cuò)為EOF 三、三、文件的順序讀寫文件的順序讀寫 13 例例 #include stdio.h#include main()main() FILE FILE * *fpfp; ; char ch char ch; ; if(fp=fopen( if(fp=fopen(“out.txt”,w,w)=NULL)=NULL) printf(cannot printf(cannot open filen); open filen); exit(0);exit(0); printf(Please printf(Please input string:); input
13、string:); ch=getchar ch=getchar();(); while(ch while(ch!=#)!=#) fputc(ch,fpfputc(ch,fp);); putchar(ch putchar(ch);); ch=getchar ch=getchar();(); fclose(fp fclose(fp);); 從鍵盤輸入字符,從鍵盤輸入字符, 逐個(gè)到當(dāng)前目錄的逐個(gè)到當(dāng)前目錄的 磁盤文件磁盤文件out.txt中,中, 直到輸入直到輸入#“為止為止 14 #include main() FILE *in, *out; char ch,infile10,outfile10;
14、 scanf(%s,infile); scanf(%s,outfile); if (in = fopen(infile, r)= NULL) printf(Cannot open infile.n); exit(0); if (out = fopen(outfile, w)= NULL) printf(Cannot open outfile.n); exit(0); while (ch=fgetc(fp)!=EOF) fputc(fgetc(in), out); fclose(in); fclose(out); 例例 文件拷貝文件拷貝 判斷文本文件是否結(jié)束 15 2、格式化、格式化I/O:fp
15、rintf與與fscanf 功能:按格式對(duì)文件進(jìn)行功能:按格式對(duì)文件進(jìn)行I/OI/O操作操作 返值:成功返值:成功, ,返回返回I/OI/O的個(gè)數(shù)的個(gè)數(shù); ;出錯(cuò)或文件尾出錯(cuò)或文件尾, ,返回返回EOFEOF 例例 fprintf(fp,“%d,%6.2f”,i,t); /將將i和和t按按%d,%6.2f格式輸出到格式輸出到fp文件文件 fscanf(fp,“%d,%f”, /若文件中有若文件中有3,4.5 ,則將則將3送入送入i, 4.5送入送入t 例例 從鍵盤按格式輸入數(shù)據(jù)存到磁盤文件中去從鍵盤按格式輸入數(shù)據(jù)存到磁盤文件中去 形式:形式: fscanf(fp , format , varl
16、istfscanf(fp , format , varlist);); fprintf(fp , format , varlist fprintf(fp , format , varlist);); 說(shuō)明:說(shuō)明:fpfp為文件指針,為文件指針,formatformat為格式控制字符串,為格式控制字符串, varlistvarlist為輸入輸出列表。為輸入輸出列表。 16 #include main() char s80,c80; int a,b; FILE *fp; if(fp=fopen(t1.txt,w)=NULL) puts(cant open file); exit() ; scanf
17、(%s%d,s,/*read from keaboard*/ fprintf(fp,%s %d,s,a);/*write to file*/ fclose(fp); if(fp=fopen(t1.txt,r)=NULL) puts(cant open file); exit(); fscanf(fp,%s%d,c,/*read from file*/ printf(%s %d,c,b);/*print to screen*/ fclose(fp); 17 功能:從功能:從fp指向的文件讀指向的文件讀/寫一個(gè)字符串寫一個(gè)字符串 返值:返值: fgets正常時(shí)返回讀取字符串的首地址;出錯(cuò)或文件尾,
18、正常時(shí)返回讀取字符串的首地址;出錯(cuò)或文件尾, 返回返回NULL fputs正常時(shí)返回寫入的最后一個(gè)字符;出錯(cuò)為正常時(shí)返回寫入的最后一個(gè)字符;出錯(cuò)為EOF 例例 從鍵盤讀入字符串存入文件,再?gòu)奈募x回顯示從鍵盤讀入字符串存入文件,再?gòu)奈募x回顯示 3、字符串、字符串I/O: fgets與與fputs 形式:形式: fgets(str , n , fp); fputs(str ,fp); 說(shuō)明:說(shuō)明:從指針從指針fpfp指向的文件中讀取指向的文件中讀取 n1n1個(gè)字符,把它個(gè)字符,把它 送到由指針?biāo)偷接芍羔?str 指向的字符數(shù)組中。指向的字符數(shù)組中。 18 #include main() FILE *fp; char string81; if(fp=fopen(fi
溫馨提示
- 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年度新能源產(chǎn)業(yè)發(fā)展贊助協(xié)議范本
- 2025年度太空探索項(xiàng)目工人雇傭服務(wù)合同
- 2025年度房屋租賃代管及租客租賃押金管理服務(wù)合同
- 產(chǎn)品合作運(yùn)營(yíng)合同范本
- 專賣代理銷售合同范本
- 買賣宅基地合同范本
- 科學(xué)膳食指南健康成長(zhǎng)新篇章
- 科技助力下的教育領(lǐng)域網(wǎng)絡(luò)娛樂(lè)應(yīng)用探索
- 倉(cāng)庫(kù)維修合同范本
- 社區(qū)環(huán)保行動(dòng)的推動(dòng)者-綠色超市
- 《檔案管理培訓(xùn)》課件
- 承包送貨合同模板
- 第一章-社會(huì)心理學(xué)概論
- 氧化還原反應(yīng)配平專項(xiàng)訓(xùn)練
- 全國(guó)教育科學(xué)規(guī)劃課題申報(bào)書:02.《鑄牢中華民族共同體意識(shí)的學(xué)校教育研究》
- GB/T 44679-2024叉車禁用與報(bào)廢技術(shù)規(guī)范
- 《船舶精通急救》全套教學(xué)課件
- 2024智能家居行業(yè)創(chuàng)新發(fā)展與前景展望研究報(bào)告
- 貴州人民版五年級(jí)勞動(dòng)下冊(cè)全冊(cè)教案
- 什么叫績(jī)效考勤管理制度
評(píng)論
0/150
提交評(píng)論