C語言(收藏)_第1頁
C語言(收藏)_第2頁
C語言(收藏)_第3頁
C語言(收藏)_第4頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、C語言 第十六講第十六講 文件文件 文件的概念文件的概念 文件的打開與關(guān)閉文件的打開與關(guān)閉 文件的讀寫文件的讀寫 文件的定位文件的定位 程序設(shè)計(jì)舉例程序設(shè)計(jì)舉例 C C語言程序設(shè)計(jì)語言程序設(shè)計(jì) 簡介簡介 文件文件 存儲在外存儲器上的數(shù)據(jù)集合。存儲在外存儲器上的數(shù)據(jù)集合。 文件文件 內(nèi)存內(nèi)存 硬盤硬盤 寫寫 讀讀 保存在變量和數(shù)保存在變量和數(shù) 組中的數(shù)據(jù)是暫組中的數(shù)據(jù)是暫 時(shí)的時(shí)的 大量的數(shù)據(jù)保存大量的數(shù)據(jù)保存 到文件實(shí)現(xiàn)永久到文件實(shí)現(xiàn)永久 存儲存儲 簡介簡介 數(shù)據(jù)的層次結(jié)構(gòu)數(shù)據(jù)的層次結(jié)構(gòu) 文件文件 11001011 WangHai21M788983 LiFei21F768885 ZhaoXin

2、21M818679 01011100 1 文件文件 字段字段 字節(jié)字節(jié) 位位 記錄記錄 簡介簡介 C語言的文件處理語言的文件處理 C語言把文件看作是一個(gè)有序的字節(jié)或字符流。語言把文件看作是一個(gè)有序的字節(jié)或字符流。 文件文件 簡介簡介 文件的分類文件的分類(按存儲形式分)(按存儲形式分) 文本文件文本文件 數(shù)據(jù)被作為字符,并以字符的二進(jìn)制編碼形式保存。數(shù)據(jù)被作為字符,并以字符的二進(jìn)制編碼形式保存。 舉例舉例 文件文件 1234 1234 整數(shù)整數(shù) 把把4個(gè)字符的二進(jìn)制編碼寫入文個(gè)字符的二進(jìn)制編碼寫入文 件中件中 00110 00110 簡介簡介 文件的分類文件的分類(按存儲形式分)(按存儲形式分

3、) 二進(jìn)制文件二進(jìn)制文件 以數(shù)據(jù)在內(nèi)存中的二進(jìn)制形式保存。以數(shù)據(jù)在內(nèi)存中的二進(jìn)制形式保存。 舉例舉例 文件文件 1234整數(shù)整數(shù) 00000100 11010010 把值把值1234的二進(jìn)制編碼寫入文件的二進(jìn)制編碼寫入文件 中中 簡介簡介 文件的讀寫文件的讀寫 緩沖文件系統(tǒng)緩沖文件系統(tǒng) 系統(tǒng)在內(nèi)存中開辟一塊緩沖區(qū)以便慢速的外設(shè)與其成塊地進(jìn)行數(shù)據(jù)交換。系統(tǒng)在內(nèi)存中開辟一塊緩沖區(qū)以便慢速的外設(shè)與其成塊地進(jìn)行數(shù)據(jù)交換。 向磁盤向磁盤(文件文件)輸出數(shù)據(jù):輸出數(shù)據(jù): 數(shù)據(jù)數(shù)據(jù)緩沖區(qū),裝滿緩沖區(qū)后緩沖區(qū),裝滿緩沖區(qū)后磁盤文件。磁盤文件。 從磁盤從磁盤(文件文件)讀入數(shù)據(jù):讀入數(shù)據(jù): 先一次性從磁盤文件將

4、一批數(shù)據(jù)輸入到緩沖區(qū),先一次性從磁盤文件將一批數(shù)據(jù)輸入到緩沖區(qū), 然后再從緩沖區(qū)逐個(gè)數(shù)據(jù)讀入到變量。然后再從緩沖區(qū)逐個(gè)數(shù)據(jù)讀入到變量。 文件文件 文件指針文件指針 文件指針文件指針(指向文件的指針)(指向文件的指針) 緩沖文件系統(tǒng)為每個(gè)使用的文件在內(nèi)存中開辟一存儲區(qū)存放其相關(guān)信息,這些緩沖文件系統(tǒng)為每個(gè)使用的文件在內(nèi)存中開辟一存儲區(qū)存放其相關(guān)信息,這些 信息用一個(gè)結(jié)構(gòu)體變量保存,該信息用一個(gè)結(jié)構(gòu)體變量保存,該結(jié)構(gòu)體類型結(jié)構(gòu)體類型的名字是的名字是 FILE。 程序通過程序通過 FILE類型指針建立和文件的聯(lián)系,進(jìn)行關(guān)于文件的一切操作。類型指針建立和文件的聯(lián)系,進(jìn)行關(guān)于文件的一切操作。 定義形式:

5、定義形式: FILE *指針變量名指針變量名; 舉例:舉例: 定義了一個(gè)結(jié)構(gòu)體定義了一個(gè)結(jié)構(gòu)體FILE類型的指針變量:類型的指針變量:fp。 文件文件 用于存放文件的緩沖區(qū)用于存放文件的緩沖區(qū) 首地址,即指向一個(gè)文首地址,即指向一個(gè)文 件。件。 FILE *fp; 文件的打開文件的打開 打開文件打開文件 方法:方法: 為了打開一個(gè)文件,首先要為該文件定義一個(gè)文件類型指針;為了打開一個(gè)文件,首先要為該文件定義一個(gè)文件類型指針; 然后用然后用C語言提供的語言提供的fopen()函數(shù)函數(shù)打開文件。打開文件。 fopen函數(shù)有兩個(gè)參數(shù):函數(shù)有兩個(gè)參數(shù): “文件名文件名”與與“文件使用方式文件使用方式”

6、。 它們均是字符串。它們均是字符串。 一般形式:一般形式: 文件文件 FILE *文件指針名文件指針名; 文件指針名文件指針名fopen(文件名文件名,文件使用方式文件使用方式 ); 文件的打開文件的打開 打開文件打開文件 文件使用方式文件使用方式 文件文件 符號符號意義意義 r(read) 以只讀方式打開一個(gè)文本文件,若文件不存在,則返回空以只讀方式打開一個(gè)文本文件,若文件不存在,則返回空 指針指針 w(write)以只寫方式打開或創(chuàng)建一個(gè)文本文件,并覆蓋原有數(shù)據(jù)以只寫方式打開或創(chuàng)建一個(gè)文本文件,并覆蓋原有數(shù)據(jù) a(append) 以追加方式打開或創(chuàng)建一個(gè)文本文件,并從文件末尾寫數(shù)以追加方式

7、打開或創(chuàng)建一個(gè)文本文件,并從文件末尾寫數(shù) 據(jù)據(jù) t(text)文本文件,可省略不寫文本文件,可省略不寫 b(binary)二進(jìn)制文件二進(jìn)制文件 +讀和寫讀和寫 文件的打開文件的打開 打開文件打開文件 舉例舉例 其意義是在當(dāng)前目錄下打開文件,文件的使用方式為其意義是在當(dāng)前目錄下打開文件,文件的使用方式為“只讀只讀”,并使,并使fp指指 向該文件。向該文件。 舉例舉例 其意義是打開其意義是打開c盤根目錄下的文件,這是一個(gè)二進(jìn)制文件,只允許按二進(jìn)制盤根目錄下的文件,這是一個(gè)二進(jìn)制文件,只允許按二進(jìn)制 方式進(jìn)行讀操作。方式進(jìn)行讀操作。 兩個(gè)反斜線兩個(gè)反斜線“”中的第一個(gè)表示轉(zhuǎn)義字符,第二個(gè)表示根目錄。

8、中的第一個(gè)表示轉(zhuǎn)義字符,第二個(gè)表示根目錄。 文件文件 FILE *fp; fp = fopen(, r); FILE *fpabc; fpabc = fopen(“c:, rb); 文件的關(guān)閉文件的關(guān)閉 關(guān)閉文件關(guān)閉文件 使用使用fclose()函數(shù)。函數(shù)。 一般形式:一般形式: fclose(文件指針文件指針); 舉例舉例 將將fp指向的緩沖區(qū)中的數(shù)據(jù)存放到外存儲器的文件中,然后釋放該緩沖區(qū),指向的緩沖區(qū)中的數(shù)據(jù)存放到外存儲器的文件中,然后釋放該緩沖區(qū), 使文件指針變量不再指向與該文件對應(yīng)的使文件指針變量不再指向與該文件對應(yīng)的FILE結(jié)構(gòu),從而斷開與文件的關(guān)結(jié)構(gòu),從而斷開與文件的關(guān) 聯(lián)。聯(lián)。

9、 操作正常返回操作正常返回0,否則返回,否則返回EOF(是在(是在stdio.h文件中定義的符號常量,值為文件中定義的符號常量,值為- 1)。)。 文件文件 FILE *fp; fclose(fp); 如果不關(guān)閉文件,將會丟失數(shù)據(jù),如果不關(guān)閉文件,將會丟失數(shù)據(jù), 并且一個(gè)并且一個(gè)C程序能同時(shí)打開的文件程序能同時(shí)打開的文件 數(shù)有限,應(yīng)該養(yǎng)成在使用完文件數(shù)有限,應(yīng)該養(yǎng)成在使用完文件 后關(guān)閉文件的習(xí)慣。后關(guān)閉文件的習(xí)慣。 文件操作文件操作 文件操作的一般步驟文件操作的一般步驟 文件文件 /* 定義聲明文件指針定義聲明文件指針 */ FILE *fp; /* 打開文件打開文件 */ fp = fope

10、n(文件名文件名, r); /* 判斷是否打開文件判斷是否打開文件 */ if (fp = NULL) /* 當(dāng)文件打開失敗時(shí)的處理當(dāng)文件打開失敗時(shí)的處理 */ /* 對文件進(jìn)行讀寫操作對文件進(jìn)行讀寫操作 */ /* 關(guān)閉文件關(guān)閉文件 */ fclose(fp); 文件的讀寫文件的讀寫 C語言支持兩種讀寫文件的方式語言支持兩種讀寫文件的方式 順序讀寫順序讀寫 從文件中一個(gè)接一個(gè)地讀寫數(shù)據(jù),僅當(dāng)讀寫了前一個(gè)數(shù)據(jù)后,才能讀寫下從文件中一個(gè)接一個(gè)地讀寫數(shù)據(jù),僅當(dāng)讀寫了前一個(gè)數(shù)據(jù)后,才能讀寫下 一個(gè)數(shù)據(jù)。一個(gè)數(shù)據(jù)。 在讀寫數(shù)據(jù)后,文件位置指針自動跳到下一個(gè)讀寫位置。在讀寫數(shù)據(jù)后,文件位置指針自動跳到下

11、一個(gè)讀寫位置。 標(biāo)準(zhǔn)輸入輸出只能進(jìn)行順序讀寫。標(biāo)準(zhǔn)輸入輸出只能進(jìn)行順序讀寫。 隨機(jī)讀寫隨機(jī)讀寫 從文件中讀寫數(shù)據(jù)時(shí)可不考慮數(shù)據(jù)在文件中的位置,可以在文件的任何位從文件中讀寫數(shù)據(jù)時(shí)可不考慮數(shù)據(jù)在文件中的位置,可以在文件的任何位 置讀寫。置讀寫。 在讀寫數(shù)據(jù)前,需要將在讀寫數(shù)據(jù)前,需要將文件位置指針文件位置指針移到讀寫位置。移到讀寫位置。 當(dāng)文件以讀或?qū)懛绞酱蜷_,文件位置指針設(shè)置在文件頭,若文件以附加方當(dāng)文件以讀或?qū)懛绞酱蜷_,文件位置指針設(shè)置在文件頭,若文件以附加方 式打開,位置設(shè)置在文件末尾。式打開,位置設(shè)置在文件末尾。 文件文件 字符的讀寫字符的讀寫 讀字符讀字符 fgetc()函數(shù)函數(shù) 從指

12、定文件讀入一個(gè)字符,該文件必須是以讀或讀寫方式打開。從指定文件讀入一個(gè)字符,該文件必須是以讀或讀寫方式打開。 返回值:返回值: 調(diào)用成功時(shí)返回讀入的字符;調(diào)用成功時(shí)返回讀入的字符; 文件結(jié)束時(shí)返回文件結(jié)束符文件結(jié)束時(shí)返回文件結(jié)束符EOF。 舉例舉例 表示從文件指針變量表示從文件指針變量fp指向的文件中讀出一個(gè)字符,賦給字符變量指向的文件中讀出一個(gè)字符,賦給字符變量ch 文件文件 ch = fgetc(fp); 字符的讀寫字符的讀寫 文件位置指針文件位置指針 文件型數(shù)據(jù)結(jié)構(gòu)中,用文件位置指針指向當(dāng)前對文件進(jìn)行讀寫操作的位置。文件型數(shù)據(jù)結(jié)構(gòu)中,用文件位置指針指向當(dāng)前對文件進(jìn)行讀寫操作的位置。 在文

13、件打開時(shí),該指針總是指向文件的第一個(gè)字節(jié)。讀寫文件時(shí),每讀寫在文件打開時(shí),該指針總是指向文件的第一個(gè)字節(jié)。讀寫文件時(shí),每讀寫 一個(gè)字符后,該位置指針的值會自動加一個(gè)字符后,該位置指針的值會自動加1,指向下一個(gè)字符。,指向下一個(gè)字符。 改變位置指針的值,也就改變了下一次讀寫操作在文件中執(zhí)行時(shí)的位置。改變位置指針的值,也就改變了下一次讀寫操作在文件中執(zhí)行時(shí)的位置。 文件文件 文件位置指針文件位置指針 字符的讀寫字符的讀寫 文件結(jié)束文件結(jié)束 問題問題 使用使用fgetc()函數(shù),文件結(jié)束時(shí)返回文件結(jié)束符函數(shù),文件結(jié)束時(shí)返回文件結(jié)束符EOF,其值為,其值為-1。這在對文本。這在對文本 文件操作時(shí)不會產(chǎn)

14、生問題。但對二進(jìn)制文件進(jìn)行讀操作時(shí),由于文件操作時(shí)不會產(chǎn)生問題。但對二進(jìn)制文件進(jìn)行讀操作時(shí),由于-1是二進(jìn)是二進(jìn) 制數(shù)的合法值,故將影響文件數(shù)據(jù)的讀取。制數(shù)的合法值,故將影響文件數(shù)據(jù)的讀取。 為解決此問題,為解決此問題,ANSI C提供了專門判斷文件結(jié)束的函數(shù)提供了專門判斷文件結(jié)束的函數(shù)feof()。 feof()函數(shù)函數(shù) feof(文件指針文件指針); 判斷文件位置指針是否已至文件尾判斷文件位置指針是否已至文件尾 返回值:返回值: 函數(shù)返回值為函數(shù)返回值為1時(shí)表示已至文件尾部;時(shí)表示已至文件尾部; 為為0時(shí)則還未到文件結(jié)束處。時(shí)則還未到文件結(jié)束處。 文件文件 字符的讀寫字符的讀寫 寫字符寫字

15、符 fputc()函數(shù)函數(shù) fputc(字符量,文件指針字符量,文件指針); 將一個(gè)字符寫到磁盤文件上去將一個(gè)字符寫到磁盤文件上去 返回值:返回值: 調(diào)用成功時(shí)返回輸出的字符;調(diào)用成功時(shí)返回輸出的字符; 失敗時(shí)返回失敗時(shí)返回EOF。 舉例舉例 表示向文件指針變量表示向文件指針變量fp指向的文件寫入一個(gè)字符指向的文件寫入一個(gè)字符a。 文件文件 fputc(a, fp); 案例分析:字符的讀寫案例分析:字符的讀寫 問題問題 打開打開“c:infile.c”文件,然后將其復(fù)制到文件,然后將其復(fù)制到“c:outfile.c”。 源代碼源代碼 文件文件 #include stdio.h #include

16、 stdlib.h void main() FILE *infp,*outfp; char ch; if (infp = fopen(c:infile.c, r) = NULL) printf(Cannot open infile.c.n); exit(0); 案例分析:字符的讀寫案例分析:字符的讀寫 源代碼源代碼 文件文件 if (outfp = fopen(c:outfile.c, w) = NULL) printf(Cannot open outfile.c.n); exit(0); while(!feof(infp) if (ch = fgetc(infp) != EOF) fputc

17、(ch,outfp); fclose(infp); fclose(outfp); 字符串的讀寫字符串的讀寫 讀字符串讀字符串 fgets()函數(shù)函數(shù) fgets(字符數(shù)組名字符數(shù)組名, n, 文件指針文件指針); 從指定文件讀入從指定文件讀入n-1個(gè)字符到字符數(shù)組,最后加一個(gè)個(gè)字符到字符數(shù)組,最后加一個(gè)0結(jié)束符。在讀完結(jié)束符。在讀完 n-1個(gè)字符之前遇到換行符或文件結(jié)束符個(gè)字符之前遇到換行符或文件結(jié)束符EOF,讀入即結(jié)束。,讀入即結(jié)束。 返回值:字符數(shù)組的地址。返回值:字符數(shù)組的地址。 舉例舉例 從從fp所指的文件中讀出所指的文件中讀出n-1個(gè)字符送入字符數(shù)組個(gè)字符送入字符數(shù)組str中。中。

18、文件文件 fgets(str, n, fp); 字符串的讀寫字符串的讀寫 寫字符串寫字符串 fputs()函數(shù)函數(shù) fputs(字符數(shù)組名字符數(shù)組名, 文件指針文件指針); 向指定的文件輸出一個(gè)字符串,向指定的文件輸出一個(gè)字符串,0結(jié)束符不輸出。其中字符串可以是結(jié)束符不輸出。其中字符串可以是 字符串常量、字符數(shù)組名或指針變量。字符串常量、字符數(shù)組名或指針變量。 返回值:返回值: 調(diào)用成功時(shí),返回調(diào)用成功時(shí),返回0; 否則返回否則返回EOF。 舉例舉例 其意義是把字符串其意義是把字符串“abcd”寫入寫入fp所指的文件之中。所指的文件之中。 文件文件 fputs(“abcd”, fp); 案例分

19、析:字符串的讀寫案例分析:字符串的讀寫 問題問題 從鍵盤上輸入一串字符,寫入文本文件從鍵盤上輸入一串字符,寫入文本文件“abc.c”中,再將文本文件的內(nèi)容讀出,中,再將文本文件的內(nèi)容讀出, 顯示在屏幕上。顯示在屏幕上。 源代碼源代碼 文件文件 #include stdio.h #include stdlib.h void main() FILE *fp; char str100, ch; if(fp = fopen(c:abc.c, w) = NULL) printf( error.n); exit(0); 案例分析:字符串的讀寫案例分析:字符串的讀寫 源代碼源代碼 文件文件 printf(請

20、輸入一串字符:請輸入一串字符:n); gets(str); fputs(str,fp); fclose(fp); if(fp=fopen(c:abc.c, r) = NULL) printf( error.n); exit(0); while(!feof(fp) if (ch = fgetc(fp) != EOF) putchar(ch); fclose(fp); 格式化讀寫格式化讀寫 格式化讀格式化讀 fscanf()函數(shù)函數(shù) fscanf(文件指針文件指針, ”格式控制字符串格式控制字符串”, 地址表列地址表列); 從指定的文件中格式化讀數(shù)據(jù)。從指定的文件中格式化讀數(shù)據(jù)。 這個(gè)函數(shù)與格式輸

21、入函數(shù)這個(gè)函數(shù)與格式輸入函數(shù)scanf( )很相似,它們的區(qū)別在于,很相似,它們的區(qū)別在于,scanf( )函數(shù)函數(shù) 是從鍵盤輸入數(shù)據(jù),而是從鍵盤輸入數(shù)據(jù),而fscanf( )函數(shù)是從文件讀入數(shù)據(jù),因此在函數(shù)是從文件讀入數(shù)據(jù),因此在fscanf( ) 函數(shù)參數(shù)中多了一個(gè)文件指針,用于指出從哪個(gè)文件讀入數(shù)據(jù)。函數(shù)參數(shù)中多了一個(gè)文件指針,用于指出從哪個(gè)文件讀入數(shù)據(jù)。 舉例舉例 表示從磁盤文件中的讀取一個(gè)浮點(diǎn)數(shù)和一個(gè)整數(shù),分別存入變量表示從磁盤文件中的讀取一個(gè)浮點(diǎn)數(shù)和一個(gè)整數(shù),分別存入變量f和和d。 文件文件 fscanf(fp, “%f%d”, 格式化讀寫格式化讀寫 格式化寫格式化寫 fprint

22、f()函數(shù)函數(shù) fprintf(文件指針文件指針, ”格式控制字符串格式控制字符串”, 輸出表列輸出表列); 格式化寫數(shù)據(jù)到指定的文件中。格式化寫數(shù)據(jù)到指定的文件中。 這個(gè)函數(shù)與這個(gè)函數(shù)與printf( )函數(shù)很相似,它們的區(qū)別在于,函數(shù)很相似,它們的區(qū)別在于,printf()函數(shù)是將數(shù)據(jù)函數(shù)是將數(shù)據(jù) 輸出到屏幕上,而輸出到屏幕上,而fprintf()函數(shù)是將數(shù)據(jù)輸出到文件中,因此在函數(shù)是將數(shù)據(jù)輸出到文件中,因此在fprintf()函函 數(shù)參數(shù)中多了一個(gè)文件指針,用于指出將數(shù)據(jù)輸出到哪個(gè)文件中。數(shù)參數(shù)中多了一個(gè)文件指針,用于指出將數(shù)據(jù)輸出到哪個(gè)文件中。 舉例舉例 表示把變量表示把變量f和和d按

23、指定的格式寫入磁盤文件。按指定的格式寫入磁盤文件。 文件文件 fprintf(fp, “f=%f, d=%dn”, f, d); 數(shù)據(jù)塊的讀寫數(shù)據(jù)塊的讀寫 以數(shù)據(jù)塊方式讀寫文件以數(shù)據(jù)塊方式讀寫文件 fscanf()函數(shù)和函數(shù)和fprintf()函數(shù)對磁盤文件讀寫,使用方便,易理解。但輸入輸出函數(shù)對磁盤文件讀寫,使用方便,易理解。但輸入輸出 需要轉(zhuǎn)化。需要轉(zhuǎn)化。 因此,在內(nèi)存與磁盤頻繁交換數(shù)據(jù)的情況下,最好用因此,在內(nèi)存與磁盤頻繁交換數(shù)據(jù)的情況下,最好用fread()和和fwrite()函數(shù)。函數(shù)。 fread(內(nèi)存地址內(nèi)存地址,數(shù)據(jù)項(xiàng)字節(jié)數(shù)數(shù)據(jù)項(xiàng)字節(jié)數(shù),數(shù)據(jù)項(xiàng)個(gè)數(shù)數(shù)據(jù)項(xiàng)個(gè)數(shù),文件指針文件指針)

24、; fwrite(內(nèi)存地址內(nèi)存地址,數(shù)據(jù)項(xiàng)字節(jié)數(shù)數(shù)據(jù)項(xiàng)字節(jié)數(shù),數(shù)據(jù)項(xiàng)個(gè)數(shù)數(shù)據(jù)項(xiàng)個(gè)數(shù),文件指針文件指針); 通常用于對二進(jìn)制文件的讀寫操作。通常用于對二進(jìn)制文件的讀寫操作。 舉例舉例 表示從已打開的一個(gè)文件中讀入表示從已打開的一個(gè)文件中讀入5個(gè)整數(shù),依次送入整型數(shù)組個(gè)整數(shù),依次送入整型數(shù)組a中。中。 文件文件 int a5; fread(a, sizeof(int), 5, fp); 文件的隨機(jī)讀寫文件的隨機(jī)讀寫 文件內(nèi)部的位置文件內(nèi)部的位置 按要求移動位置指針,是實(shí)現(xiàn)隨機(jī)讀寫的關(guān)鍵。按要求移動位置指針,是實(shí)現(xiàn)隨機(jī)讀寫的關(guān)鍵。 rewind()函數(shù)函數(shù) rewind(文件指針文件指針); 使位置

25、指針重新返回到文件的開頭,函數(shù)無返回值使位置指針重新返回到文件的開頭,函數(shù)無返回值。 ftell()函數(shù)函數(shù) ftell(); 得到當(dāng)前文件指針位置。得到當(dāng)前文件指針位置。 返回值:返回值: 調(diào)用成功時(shí),返回調(diào)用成功時(shí),返回long int 數(shù)值,表示文件指針位置;數(shù)值,表示文件指針位置; 出錯(cuò)返回出錯(cuò)返回-1L。 文件文件 文件的隨機(jī)讀寫文件的隨機(jī)讀寫 文件內(nèi)部的位置文件內(nèi)部的位置 fseek()函數(shù)函數(shù) rewind(文件指針文件指針, 位移量位移量, 起始點(diǎn)起始點(diǎn)); 改變文件的位置指針改變文件的位置指針。 其中,其中, 文件指針:是文件打開時(shí)返回的文件指針。文件指針:是文件打開時(shí)返回的

26、文件指針。 位移量:是指以起始點(diǎn)為基點(diǎn),向前向后移動的字節(jié)數(shù),可以為負(fù)值。位移量:是指以起始點(diǎn)為基點(diǎn),向前向后移動的字節(jié)數(shù),可以為負(fù)值。 大多數(shù)大多數(shù)C語言版本要求位移量為語言版本要求位移量為long型數(shù)。型數(shù)。 起始點(diǎn):表示從何處開始計(jì)算位移量,規(guī)定的起始點(diǎn)有:起始點(diǎn):表示從何處開始計(jì)算位移量,規(guī)定的起始點(diǎn)有: 返回值:操作成功返回返回值:操作成功返回0,否則返回非,否則返回非0。 文件文件 起始點(diǎn)起始點(diǎn)名字名字 數(shù)字代數(shù)字代 號號 文件開文件開 始始 SEEK_SET SEEK_SET 0 0 當(dāng)前位當(dāng)前位 置置 SEEK_CURSEEK_CUR1 1 文件末文件末 尾尾 SEEK_END

27、SEEK_END2 2 案例分析:文件的隨機(jī)讀寫案例分析:文件的隨機(jī)讀寫 問題問題 設(shè)文件設(shè)文件“alphabet.c”中存放了字母表中存放了字母表“AZ”,現(xiàn)在打開這個(gè)文件,用從尾部,現(xiàn)在打開這個(gè)文件,用從尾部 倒著讀的方式將其信息讀出并送屏幕顯示。倒著讀的方式將其信息讀出并送屏幕顯示。 源代碼源代碼 文件文件 #include #include void main() FILE *fp; long i; if(fp=fopen(“c:alphabet.c”, “rb”)= NULL) printf(“ error.n”); exit(0); 案例分析:文件的隨機(jī)讀寫案例分析:文件的隨機(jī)讀寫 源代碼源代碼 文件文件 for(i=1;i=26;i+) fseek(fp,-i,SEEK_END); /* i

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論