chap12_c語(yǔ)言基礎(chǔ)課件_第1頁(yè)
chap12_c語(yǔ)言基礎(chǔ)課件_第2頁(yè)
chap12_c語(yǔ)言基礎(chǔ)課件_第3頁(yè)
chap12_c語(yǔ)言基礎(chǔ)課件_第4頁(yè)
chap12_c語(yǔ)言基礎(chǔ)課件_第5頁(yè)
已閱讀5頁(yè),還剩37頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Chap 12 文件文件12.1 將短句將短句“Hello World”寫(xiě)入到文件寫(xiě)入到文件 12.2 讀取學(xué)生成績(jī)文件讀取學(xué)生成績(jī)文件 12.3 文件復(fù)制文件復(fù)制 12.4 文件綜合應(yīng)用:個(gè)人小金庫(kù)的管理文件綜合應(yīng)用:個(gè)人小金庫(kù)的管理 本章要點(diǎn)本章要點(diǎn)n什么是文件?什么是文件?C文件是如何存儲(chǔ)的?文件是如何存儲(chǔ)的?n什么是文本文件和二進(jìn)制文件?什么是文本文件和二進(jìn)制文件?n怎樣打開(kāi)、關(guān)閉文件?怎樣打開(kāi)、關(guān)閉文件?n怎樣編寫(xiě)文件讀寫(xiě)程序?怎樣編寫(xiě)文件讀寫(xiě)程序?n怎樣編寫(xiě)程序,實(shí)現(xiàn)簡(jiǎn)單的數(shù)據(jù)處理?怎樣編寫(xiě)程序,實(shí)現(xiàn)簡(jiǎn)單的數(shù)據(jù)處理?12.1 將短句將短句“Hello World”寫(xiě)入到文件寫(xiě)入到文

2、件例例12-1 把短句把短句 “Hello World!” 保存到磁盤文保存到磁盤文件件f1.txt中。中。#include #include int main(void) FILE *fp; /* 定義文件指針定義文件指針*/ if( ( fp = fopen(f1.txt, w) ) = NULL)/* 打開(kāi)文件打開(kāi)文件 */ printf(File open error!n); exit(0); fprintf( fp, %s, Hello World! ); /* 寫(xiě)文件寫(xiě)文件 */ if( fclose( fp ) ) /* 關(guān)閉文件關(guān)閉文件 */ printf( Can not c

3、lose the file!n ); exit(0); return 0;例例12-1 源程序源程序12.1.2 文件的概念文件的概念n文件:保存在外存儲(chǔ)器上的一組數(shù)據(jù)的有序文件:保存在外存儲(chǔ)器上的一組數(shù)據(jù)的有序集合集合n特點(diǎn)特點(diǎn): 數(shù)據(jù)數(shù)據(jù)長(zhǎng)久保存長(zhǎng)久保存 數(shù)據(jù)數(shù)據(jù)長(zhǎng)度不定長(zhǎng)度不定 數(shù)據(jù)按數(shù)據(jù)按順序存取順序存取12.1.3 文本文件和二進(jìn)制文件文本文件和二進(jìn)制文件 語(yǔ)言中的文件是數(shù)據(jù)流語(yǔ)言中的文件是數(shù)據(jù)流文件的兩種數(shù)據(jù)形式:文件的兩種數(shù)據(jù)形式: ASCII碼碼 (文本文件(文本文件 text stream)字符流字符流 二進(jìn)制碼二進(jìn)制碼(二進(jìn)制文件(二進(jìn)制文件 binary stream)

4、二進(jìn)制文件是直接把內(nèi)存數(shù)據(jù)以二進(jìn)制形式保存。二進(jìn)制文件是直接把內(nèi)存數(shù)據(jù)以二進(jìn)制形式保存。例如,整數(shù)例如,整數(shù)1234文本文件保存:文本文件保存:49 50 51 52 (4個(gè)字符)個(gè)字符)二進(jìn)制文件保存:二進(jìn)制文件保存: 04D2 (1234的二進(jìn)制數(shù))的二進(jìn)制數(shù))字節(jié)字節(jié) . . . . . . . .字節(jié)字節(jié)字節(jié)字節(jié)字節(jié)字節(jié)字節(jié)字節(jié)字節(jié)字節(jié)12.1.4 緩沖文件系統(tǒng)緩沖文件系統(tǒng) 內(nèi)存單元內(nèi)存單元 內(nèi)存單元內(nèi)存單元數(shù)據(jù)數(shù)據(jù) 緩沖器緩沖器512字節(jié)字節(jié)文件文件由操作由操作系統(tǒng)自系統(tǒng)自動(dòng)完成動(dòng)完成程序控制程序控制由于磁盤速度慢由于磁盤速度慢直接把數(shù)據(jù)寫(xiě)到磁盤效率很低直接把數(shù)據(jù)寫(xiě)到磁盤效率很低12

5、.1.4 緩沖文件系統(tǒng)緩沖文件系統(tǒng)向磁盤輸出數(shù)據(jù):數(shù)據(jù)向磁盤輸出數(shù)據(jù):數(shù)據(jù) 緩沖區(qū),裝滿緩沖區(qū),裝滿緩沖區(qū)后緩沖區(qū)后 磁盤文件。磁盤文件。從磁盤讀入數(shù)據(jù):先從磁盤讀入數(shù)據(jù):先一次性一次性從磁盤文件將從磁盤文件將一批一批數(shù)據(jù)輸入數(shù)據(jù)輸入到緩沖區(qū),然后再?gòu)木彌_區(qū)到緩沖區(qū),然后再?gòu)木彌_區(qū)逐個(gè)逐個(gè)讀入讀入數(shù)據(jù)到變量數(shù)據(jù)到變量。 數(shù)據(jù)數(shù)據(jù) 緩沖器緩沖器512字節(jié)字節(jié)文件文件由操作由操作系統(tǒng)自系統(tǒng)自動(dòng)完成動(dòng)完成程序控制程序控制文件名文件名 內(nèi)存單元內(nèi)存單元 內(nèi)存單元內(nèi)存單元用什么標(biāo)識(shí)用什么標(biāo)識(shí)緩沖文件與文件類型指針緩沖文件與文件類型指針用文件指針指示文件緩沖區(qū)中具體讀寫(xiě)的位置用文件指針指示文件緩沖區(qū)中具體

6、讀寫(xiě)的位置FILE *fp;數(shù)據(jù)數(shù)據(jù)緩沖器緩沖器512字節(jié)字節(jié)文件文件由操作由操作系統(tǒng)自系統(tǒng)自動(dòng)完成動(dòng)完成程序控制程序控制fp同時(shí)使用多個(gè)文件時(shí),每個(gè)文件都有緩沖區(qū),用同時(shí)使用多個(gè)文件時(shí),每個(gè)文件都有緩沖區(qū),用不同的文件指針?lè)謩e指示。不同的文件指針?lè)謩e指示。12.1.5 文件結(jié)構(gòu)與文件類型指針文件結(jié)構(gòu)與文件類型指針1. 自定義類型(自定義類型(typedef):):將將C語(yǔ)言中的已有類型(包括已定義過(guò)的自定語(yǔ)言中的已有類型(包括已定義過(guò)的自定義類型)重新命名義類型)重新命名新的名稱可以代替已有數(shù)據(jù)類型新的名稱可以代替已有數(shù)據(jù)類型常用于簡(jiǎn)化對(duì)復(fù)雜數(shù)據(jù)類型定義的描述常用于簡(jiǎn)化對(duì)復(fù)雜數(shù)據(jù)類型定義的描

7、述typedef ;自定義類型(自定義類型(typedef)typedef ; int i, j; INTEGER i, j; ; int* p1; POINT p1; 自定義類型(自定義類型(typedef)的使用方法)的使用方法定義變量定義變量 int i變量名變量名新類型名新類型名 int INTEGER加上加上 typedef typedef int INTEGER用新類型名定義變量用新類型名定義變量 INTEGER i;int num10int NUM10typedef int NUM10NUM a int a10typedef struct short level; /* 緩沖區(qū)使

8、用量緩沖區(qū)使用量 */ unsigned flags; /* 文件狀態(tài)標(biāo)志文件狀態(tài)標(biāo)志 */ char fd; /* 文件描述符文件描述符 */ short bsize; /* 緩沖區(qū)大小緩沖區(qū)大小 */ unsigned char *buffer; /* 文件緩沖區(qū)的首地址文件緩沖區(qū)的首地址 */ unsigned char *curp; /* 指向文件緩沖區(qū)的工作指針指向文件緩沖區(qū)的工作指針 */ unsigned char hold; /* 其他信息其他信息 */ unsigned istemp; short token; FILE;2. 文件結(jié)構(gòu)文件結(jié)構(gòu)FILE3. 文件類型指針文件類

9、型指針FILE * fp指向文件緩沖區(qū),通過(guò)移動(dòng)指針實(shí)現(xiàn)對(duì)文件的操作指向文件緩沖區(qū),通過(guò)移動(dòng)指針實(shí)現(xiàn)對(duì)文件的操作數(shù)據(jù)數(shù)據(jù)緩沖器緩沖器512字節(jié)字節(jié)文件文件由操作由操作系統(tǒng)自系統(tǒng)自動(dòng)完成動(dòng)完成程序控制程序控制fp同時(shí)使用多個(gè)文件時(shí),每個(gè)文件都有緩沖區(qū),用同時(shí)使用多個(gè)文件時(shí),每個(gè)文件都有緩沖區(qū),用不同的文件指針?lè)謩e指示。不同的文件指針?lè)謩e指示。如何使如何使fp與具體與具體文件文件掛鉤掛鉤? ?12.2 讀取學(xué)生成績(jī)文件讀取學(xué)生成績(jī)文件例例12-2 已知一個(gè)數(shù)據(jù)文件已知一個(gè)數(shù)據(jù)文件f.txt中保存了中保存了5個(gè)學(xué)生的計(jì)算機(jī)等個(gè)學(xué)生的計(jì)算機(jī)等級(jí)考試成績(jī),包括學(xué)號(hào)、姓名和分?jǐn)?shù),文件內(nèi)容如下級(jí)考試成績(jī),包

10、括學(xué)號(hào)、姓名和分?jǐn)?shù),文件內(nèi)容如下,請(qǐng)請(qǐng)將文件的內(nèi)容讀出并顯示到屏幕中。將文件的內(nèi)容讀出并顯示到屏幕中。 301101 張文張文 91301102 陳慧陳慧 85301103 王衛(wèi)東王衛(wèi)東76301104 鄭偉鄭偉 69301105 郭溫濤郭溫濤 5512.2.1 程序解析程序解析#include stdio.hint main(void) FILE * fp; /* 定義文件指針定義文件指針*/ long num; char stname20; int score; if(fp = fopen(f.txt, r) = NULL) /* 打開(kāi)文件打開(kāi)文件 */ printf(File open

11、error!n); exit(0); while( !feof(fp) ) fscanf(fp, %ld%s%d, &num, stname, &score); printf(%ld%s %dn, num, stname, score); ; if( fclose(fp) ) /* 關(guān)閉文件關(guān)閉文件 */ printf( Can not close the file!n ); exit(0); 12.2.2 打開(kāi)文件打開(kāi)文件if(fp = fopen(f.txt, r) = NULL)printf(File open error!n);exit(0);fopen(文件名文件名,

12、文件打開(kāi)方式文件打開(kāi)方式)使文件指針與相應(yīng)文件實(shí)體對(duì)應(yīng)起來(lái)使文件指針與相應(yīng)文件實(shí)體對(duì)應(yīng)起來(lái)程序?qū)ξ募羔樳M(jìn)行操作,即程序?qū)ξ募羔樳M(jìn)行操作,即fp代表磁盤文件代表磁盤文件n函數(shù)函數(shù)fopen() 的返回值的返回值執(zhí)行成功,則返回包含文件緩沖區(qū)等信息的執(zhí)行成功,則返回包含文件緩沖區(qū)等信息的FILE型型地址地址,賦給文件指針賦給文件指針fp不成功,則返回一個(gè)不成功,則返回一個(gè)NULL(空值)(空值)exit(0):關(guān)閉所有打開(kāi)的文件,并終止程序的執(zhí)行關(guān)閉所有打開(kāi)的文件,并終止程序的執(zhí)行參數(shù)參數(shù)0表示程序正常結(jié)束;非表示程序正常結(jié)束;非0參數(shù)通常表示不正常的程序結(jié)束參數(shù)通常表示不正常的程序結(jié)束文件打

13、開(kāi)方式文件打開(kāi)方式fp = fopen(f.txt, r)n文件打開(kāi)方式參數(shù)表文件打開(kāi)方式參數(shù)表文件讀寫(xiě)與文件讀寫(xiě)與打開(kāi)方式打開(kāi)方式if 讀文件讀文件 指定的文件必須存在,否則出錯(cuò);指定的文件必須存在,否則出錯(cuò);if 寫(xiě)文件寫(xiě)文件(指定的文件可以存在,也可以不存在指定的文件可以存在,也可以不存在) if 以以 w 方式寫(xiě)方式寫(xiě) if 該文件已經(jīng)存在該文件已經(jīng)存在 原文件將被刪去重新建立;原文件將被刪去重新建立; else 按指定的名字新建一個(gè)文件;按指定的名字新建一個(gè)文件; else if 以以 a 方式寫(xiě)方式寫(xiě) if 該文件已經(jīng)存在該文件已經(jīng)存在 寫(xiě)入的數(shù)據(jù)將被添加到指定文件原有數(shù)據(jù)的后面,

14、不會(huì)刪去原來(lái)的內(nèi)容;寫(xiě)入的數(shù)據(jù)將被添加到指定文件原有數(shù)據(jù)的后面,不會(huì)刪去原來(lái)的內(nèi)容; else 按指定的名字新建一個(gè)文件(與按指定的名字新建一個(gè)文件(與“w”相同);相同);if 文件同時(shí)讀和寫(xiě)文件同時(shí)讀和寫(xiě) 使用使用 r+、w+ 或或 a+ 打開(kāi)文件打開(kāi)文件 12.2.3 關(guān)閉文件關(guān)閉文件if( fclose(fp) ) printf( Can not close the file!n );exit(0);fclose(文件指針文件指針)把緩沖區(qū)中的數(shù)據(jù)寫(xiě)入磁盤扇區(qū),確保寫(xiě)文件的正常完成把緩沖區(qū)中的數(shù)據(jù)寫(xiě)入磁盤扇區(qū),確保寫(xiě)文件的正常完成釋放文件緩沖區(qū)單元和釋放文件緩沖區(qū)單元和FILE結(jié)構(gòu)體,

15、使文件指針與具體文結(jié)構(gòu)體,使文件指針與具體文件脫鉤。件脫鉤。函數(shù)函數(shù)fclose() 的返回值的返回值返回返回0:正常關(guān)閉文件:正常關(guān)閉文件返回非返回非0:無(wú)法正常關(guān)閉文件:無(wú)法正常關(guān)閉文件12.3 文件復(fù)制文件復(fù)制例例12-3 已知一個(gè)文本數(shù)據(jù)文件已知一個(gè)文本數(shù)據(jù)文件f1.txt,請(qǐng)將,請(qǐng)將該文件復(fù)制一份,保存為該文件復(fù)制一份,保存為f2.txt。新建一個(gè)文本文件新建一個(gè)文本文件f1.txt,將該文件與源程序放在,將該文件與源程序放在同一目錄下,執(zhí)行程序,觀察結(jié)果。同一目錄下,執(zhí)行程序,觀察結(jié)果。例例12-3 源程序源程序#include int main(void) FILE *fp1,*

16、fp2; char c; if( fp1 = fopen( f1.dat, r ) = NULL) printf( File open error!n ); exit(0); if( fp2 = fopen( f2.dat, w ) = NULL) printf( File open error!n ); exit(0); while( !feof( fp1 ) ) c = fgetc( fp1 ); fputc(c, fp2); fclose( fp1 ); fclose( fp2 ); return 0;打開(kāi)多個(gè)文件打開(kāi)多個(gè)文件if(fp1 = fopen(f1.dat, r) = NUL

17、L) printf(File open error!n); exit(0);if(fp2=fopen(f2.dat, w) = NULL) printf(File open error!n); exit(0);C語(yǔ)言允許同時(shí)打開(kāi)多個(gè)文件語(yǔ)言允許同時(shí)打開(kāi)多個(gè)文件不同的文件對(duì)應(yīng)不同的文件指針不同的文件對(duì)應(yīng)不同的文件指針不允許同一個(gè)文件在關(guān)閉前再次打開(kāi)不允許同一個(gè)文件在關(guān)閉前再次打開(kāi)文件讀寫(xiě)函數(shù)文件讀寫(xiě)函數(shù)n字符讀寫(xiě)函數(shù)字符讀寫(xiě)函數(shù): fgetc / fputcn字符串讀寫(xiě)函數(shù):字符串讀寫(xiě)函數(shù):fputs / fgetsn格式化讀寫(xiě)函數(shù):格式化讀寫(xiě)函數(shù):fscanf / fprintfn二進(jìn)制讀寫(xiě)函

18、數(shù):二進(jìn)制讀寫(xiě)函數(shù):fread / fwriten其他相關(guān)函數(shù):其他相關(guān)函數(shù):檢測(cè)文件結(jié)尾函數(shù)檢測(cè)文件結(jié)尾函數(shù)feof檢測(cè)文件讀寫(xiě)出錯(cuò)函數(shù)檢測(cè)文件讀寫(xiě)出錯(cuò)函數(shù)ferror清除末尾標(biāo)志和出錯(cuò)標(biāo)志函數(shù)清除末尾標(biāo)志和出錯(cuò)標(biāo)志函數(shù)clearerr文件定位的函數(shù)文件定位的函數(shù)fseek12.3.2 字符讀寫(xiě)函數(shù)字符讀寫(xiě)函數(shù)fgetc和和fputcwhile( !feof( fp1 ) ) c = fgetc( fp1 ); fputc(c, fp2); n函數(shù)函數(shù)fputc( )fputc(ch, fp);把一個(gè)字符把一個(gè)字符 ch 寫(xiě)到寫(xiě)到 fp 所指示的磁盤文件上所指示的磁盤文件上返回值返回值n-1

19、 (EOF):寫(xiě)文件失?。簩?xiě)文件失敗nch:寫(xiě)文件成功:寫(xiě)文件成功字符讀寫(xiě)函數(shù)字符讀寫(xiě)函數(shù)fgetc和和fputcn函數(shù)函數(shù)fgetc( )ch = fgetc( fp ) ;從從fp所指示的磁盤文件上讀入一個(gè)字符到所指示的磁盤文件上讀入一個(gè)字符到ch區(qū)分鍵盤字符輸入函數(shù)區(qū)分鍵盤字符輸入函數(shù)getchar( )從鍵盤輸入從鍵盤輸入10個(gè)字符,寫(xiě)到文件個(gè)字符,寫(xiě)到文件 f2.txt 中,再重新讀出,中,再重新讀出,并在屏幕上顯示驗(yàn)證。并在屏幕上顯示驗(yàn)證。鍵盤輸入鍵盤輸入 寫(xiě)入文件寫(xiě)入文件 f2.txt 讀文件讀文件 屏幕顯示的過(guò)屏幕顯示的過(guò)程程鍵盤輸入鍵盤輸入 f2.txt時(shí),文件按寫(xiě)方式打開(kāi)。

20、時(shí),文件按寫(xiě)方式打開(kāi)。f2.txt 顯示到屏幕時(shí),文件按讀方式打開(kāi)。顯示到屏幕時(shí),文件按讀方式打開(kāi)。讀和寫(xiě)是兩種不同的操作,讀和寫(xiě)是兩種不同的操作, f2.txt 分別被打開(kāi)和關(guān)閉兩次。分別被打開(kāi)和關(guān)閉兩次。例例12-4源程序源程序int main(void) int i; char ch; FILE *fp; if(fp=fopen(f2.txt,w) = NULL) /* 打開(kāi)文件打開(kāi)文件f2.txt */ printf(File open error!n); exit(0); for(i = 0; i 10; i+) /* 寫(xiě)文件寫(xiě)文件10次次 */ch = getchar(); fpu

21、tc(ch, fp) ; if(fclose(fp)/* 關(guān)閉文件關(guān)閉文件 */ printf(Can not close the file!n ); exit(0); if(fp=fopen(f2.txt,r) = NULL) /* 打開(kāi)文件打開(kāi)文件f2.txt */ printf(File open error!n); exit(0); for(i = 0; i 10; i+)/* 讀文件讀文件10次次 */ ch = fgetc(fp); putchar(ch); if(fclose(fp)/* 再次關(guān)閉文件再次關(guān)閉文件 */ printf(Can not close the file!

22、n); exit(0); return 0;12.3.3 字符串方式讀寫(xiě)函數(shù)字符串方式讀寫(xiě)函數(shù)fgets和和fputsn函數(shù)函數(shù)fputs( ) fputs(s, fp);用來(lái)向指定的文本文件寫(xiě)入一個(gè)字符串用來(lái)向指定的文本文件寫(xiě)入一個(gè)字符串s:要寫(xiě)入的字符串,結(jié)束符:要寫(xiě)入的字符串,結(jié)束符0不寫(xiě)入文件。不寫(xiě)入文件。函數(shù)返回值函數(shù)返回值n執(zhí)行成功,函數(shù)返回所寫(xiě)的最后一個(gè)字符執(zhí)行成功,函數(shù)返回所寫(xiě)的最后一個(gè)字符n否則,函數(shù)返回否則,函數(shù)返回EOF字符串方式讀寫(xiě)函數(shù)字符串方式讀寫(xiě)函數(shù)fgets和和fputsn函數(shù)函數(shù)fgets( )fgets(s, n, fp);從文本文件中讀取字符串從文本文件中讀

23、取字符串s:可以是字符數(shù)組名或字符指針;:可以是字符數(shù)組名或字符指針;n:指定讀入的字符個(gè):指定讀入的字符個(gè)數(shù);數(shù);fp:文件指針:文件指針函數(shù)被調(diào)用時(shí),最多讀取函數(shù)被調(diào)用時(shí),最多讀取n-1個(gè)字符,并將讀入的字符串個(gè)字符,并將讀入的字符串存入存入s所指向內(nèi)存地址開(kāi)始的所指向內(nèi)存地址開(kāi)始的n-1個(gè)連續(xù)的內(nèi)存單元中。個(gè)連續(xù)的內(nèi)存單元中。當(dāng)函數(shù)讀取的字符達(dá)到指定的個(gè)數(shù),或接收到換行符,或接收到文當(dāng)函數(shù)讀取的字符達(dá)到指定的個(gè)數(shù),或接收到換行符,或接收到文件結(jié)束標(biāo)志件結(jié)束標(biāo)志EOF時(shí),將在讀取的字符后面自動(dòng)添加一個(gè)時(shí),將在讀取的字符后面自動(dòng)添加一個(gè)0字符;字符;若有換行符,則將換行符保留(換行符在若有換

24、行符,則將換行符保留(換行符在0字符之前);若有字符之前);若有EOF,則不保留,則不保留函數(shù)返回值函數(shù)返回值n執(zhí)行成功,返回讀取的字符串;執(zhí)行成功,返回讀取的字符串;n如果失敗,則返回空指針,這時(shí),如果失敗,則返回空指針,這時(shí),s的內(nèi)容不確定的內(nèi)容不確定將字符串將字符串a(chǎn)pple, grape, pear 寫(xiě)入到磁盤文件寫(xiě)入到磁盤文件f12-5.txt中,然后再?gòu)脑撐闹?,然后再?gòu)脑撐募凶x出,顯示到屏幕。件中讀出,顯示到屏幕。int main(void) FILE *fp;char a 80 = apple, grape, pear, strout80=; int i; if(fp = fo

25、pen(f12-5.txt,w) = NULL) printf(File open error!n); exit(0); for(i = 0;i 3;i+) fputs(ai, fp); fclose(fp);if(fp = fopen(f12-5.txt,r) = NULL) printf(File open error!n); exit(0);i = 0;while( !feof(fp) ) if( fgets(strout, strlen(ai+)+1, fp) != NULL) puts(strout);fclose(fp); return 0;例例12-512.3.4 格式化文件讀寫(xiě)

26、格式化文件讀寫(xiě)fscanf和和fprintfnfscanf(文件指針,格式字符串,輸入表(文件指針,格式字符串,輸入表);nfprintf(文件指針,格式字符串,輸出表(文件指針,格式字符串,輸出表);指定格式的輸入輸出函數(shù)指定格式的輸入輸出函數(shù)FILE *fp; int n; float x;fp = fopen(a.txt, r);fscanf(fp,%d%f,&n,&x);表示從文件表示從文件a.txt分別讀入整型數(shù)到變量分別讀入整型數(shù)到變量n、浮點(diǎn)數(shù)到變量、浮點(diǎn)數(shù)到變量xfp = fopen(b.txt, w);fprintf(fp, %d%f, n, x);表示把變量

27、表示把變量n和和x的數(shù)值寫(xiě)入文件的數(shù)值寫(xiě)入文件b.txt12.3.5 數(shù)據(jù)塊讀寫(xiě)數(shù)據(jù)塊讀寫(xiě)fread()和和fwrite()nfread(buffer, size, count, fp);從二進(jìn)制文件中讀入一個(gè)數(shù)據(jù)塊到變量從二進(jìn)制文件中讀入一個(gè)數(shù)據(jù)塊到變量nfwrite(buffer, size, count, fp);向二進(jìn)制文件中寫(xiě)入一個(gè)數(shù)據(jù)塊向二進(jìn)制文件中寫(xiě)入一個(gè)數(shù)據(jù)塊buffer:指針,表示存放數(shù)據(jù)的首地址;:指針,表示存放數(shù)據(jù)的首地址;size:數(shù)據(jù)塊的字節(jié)數(shù):數(shù)據(jù)塊的字節(jié)數(shù)count:要讀寫(xiě)的數(shù)據(jù)塊塊數(shù):要讀寫(xiě)的數(shù)據(jù)塊塊數(shù)fp:文件指針:文件指針12.3.6 其他相關(guān)函數(shù)其他相關(guān)函

28、數(shù)n函數(shù)函數(shù)feoffeof(fp) ;判斷判斷fp指針是否已經(jīng)到文件末尾,指針是否已經(jīng)到文件末尾,函數(shù)返回值函數(shù)返回值n1:到文件結(jié)束位置:到文件結(jié)束位置n0:文件未結(jié)束:文件未結(jié)束其他相關(guān)函數(shù)其他相關(guān)函數(shù)n函數(shù)函數(shù)rewind( )rewind(FILE *fp);定位文件指針,使文件指針指向讀寫(xiě)文件的首地址,定位文件指針,使文件指針指向讀寫(xiě)文件的首地址,即打開(kāi)文件時(shí)文件指針?biāo)赶虻奈恢?。即打開(kāi)文件時(shí)文件指針?biāo)赶虻奈恢谩F渌嚓P(guān)函數(shù)其他相關(guān)函數(shù)n函數(shù)函數(shù)fseek( )fseek(fp, offset, from);用來(lái)控制指針移動(dòng)用來(lái)控制指針移動(dòng)offset:移動(dòng)偏移量,:移動(dòng)偏移量,

29、long型型from:起始位置,文件首部、當(dāng)前位置和文件尾部分別對(duì)應(yīng):起始位置,文件首部、當(dāng)前位置和文件尾部分別對(duì)應(yīng)0,1,2,或常量,或常量SEEK_SET、SEEK_CUR、SEEK_END。例如:例如:fseek(fp, 20L, 0):將文件位置指針移動(dòng)到離文件首:將文件位置指針移動(dòng)到離文件首20字節(jié)處字節(jié)處fseek(fp, -20L, SEEK_END):將文件位置指針移動(dòng)到離文件尾部前:將文件位置指針移動(dòng)到離文件尾部前20字節(jié)處字節(jié)處其他相關(guān)函數(shù)其他相關(guān)函數(shù)n函數(shù)函數(shù)ftell( )ftell(文件指針文件指針);獲取當(dāng)前文件指針的位置,即相對(duì)于文件開(kāi)頭的獲取當(dāng)前文件指針的位置,

30、即相對(duì)于文件開(kāi)頭的位移量(字節(jié)數(shù))位移量(字節(jié)數(shù))函數(shù)出錯(cuò)時(shí),返回函數(shù)出錯(cuò)時(shí),返回-1L12.3.6 其他相關(guān)函數(shù)其他相關(guān)函數(shù)n5ferror函數(shù):函數(shù)用來(lái)檢查文件在用各函數(shù):函數(shù)用來(lái)檢查文件在用各種輸入輸出函數(shù)進(jìn)行讀寫(xiě)是否出錯(cuò),若返種輸入輸出函數(shù)進(jìn)行讀寫(xiě)是否出錯(cuò),若返回值為回值為0,表示未出錯(cuò),否則表示有錯(cuò),表示未出錯(cuò),否則表示有錯(cuò) 調(diào)用形式為:調(diào)用形式為:文件指針必須是已經(jīng)定義過(guò)的文件指針必須是已經(jīng)定義過(guò)的其他相關(guān)函數(shù)其他相關(guān)函數(shù)n函數(shù)函數(shù)clearerr( )clearerr(文件指針文件指針);用來(lái)清除出錯(cuò)標(biāo)志和文件結(jié)束標(biāo)志,使它們?yōu)橛脕?lái)清除出錯(cuò)標(biāo)志和文件結(jié)束標(biāo)志,使它們?yōu)?12.4 文件綜合應(yīng)用:個(gè)人小

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論