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

下載本文檔

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

文檔簡介

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

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

3、舉例文件文件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ù): 先一次性從磁盤文件將一批數(shù)據(jù)輸入到緩沖區(qū),先一次性從磁盤文件將一批數(shù)據(jù)輸入到緩沖區(qū), 然后再從緩沖區(qū)逐個(gè)數(shù)據(jù)讀入到變量。然后再從緩沖區(qū)逐個(gè)數(shù)

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

5、p。文件文件用于存放文件的緩沖區(qū)首地用于存放文件的緩沖區(qū)首地址,即指向一個(gè)文件。址,即指向一個(gè)文件。FILE *fp;文件的打開文件的打開打開文件打開文件方法:方法:為了打開一個(gè)文件,首先要為該文件定義一個(gè)文件類型指針;為了打開一個(gè)文件,首先要為該文件定義一個(gè)文件類型指針;然后用然后用C語言提供的語言提供的fopen()函數(shù)函數(shù)打開文件。打開文件。fopen函數(shù)有兩個(gè)參數(shù):函數(shù)有兩個(gè)參數(shù): “文件名文件名”與與“文件使用方式文件使用方式”。 它們均是字符串。它們均是字符串。一般形式:一般形式:文件文件FILE *文件指針名文件指針名;文件指針名文件指針名fopen(文件名文件名,文件使用方式文

6、件使用方式); 文件的打開文件的打開打開文件打開文件文件使用方式文件使用方式文件文件符號(hào)符號(hào)意義意義r(read)以只讀方式打開一個(gè)文本文件,若文件不存在,則返回空指針以只讀方式打開一個(gè)文本文件,若文件不存在,則返回空指針w(write)以只寫方式打開或創(chuàng)建一個(gè)文本文件,并覆蓋原有數(shù)據(jù)以只寫方式打開或創(chuàng)建一個(gè)文本文件,并覆蓋原有數(shù)據(jù)a(append)以追加方式打開或創(chuàng)建一個(gè)文本文件,并從文件末尾寫數(shù)據(jù)以追加方式打開或創(chuàng)建一個(gè)文本文件,并從文件末尾寫數(shù)據(jù)t(text)文本文件,可省略不寫文本文件,可省略不寫b(binary)二進(jìn)制文件二進(jìn)制文件+讀和寫讀和寫文件的打開文件的打開打開文件打開文件舉

7、例舉例其意義是在當(dāng)前目錄下打開文件,文件的使用方式為其意義是在當(dāng)前目錄下打開文件,文件的使用方式為“只讀只讀”,并,并使使fp指向該文件。指向該文件。 舉例舉例其意義是打開其意義是打開c盤根目錄下的文件,這是一個(gè)二進(jìn)制文件,只允許盤根目錄下的文件,這是一個(gè)二進(jìn)制文件,只允許按二進(jìn)制方式進(jìn)行讀操作。按二進(jìn)制方式進(jìn)行讀操作。兩個(gè)反斜線兩個(gè)反斜線“”中的第一個(gè)表示轉(zhuǎn)義字符,第二個(gè)表示根目錄。中的第一個(gè)表示轉(zhuǎn)義字符,第二個(gè)表示根目錄。文件文件FILE *fp;fp = fopen(, r); FILE *fpabc;fpabc = fopen(“c:, rb); 文件的關(guān)閉文件的關(guān)閉關(guān)閉文件關(guān)閉文件使

8、用使用fclose()函數(shù)。函數(shù)。一般形式:一般形式:fclose(文件指針文件指針);舉例舉例將將fp指向的緩沖區(qū)中的數(shù)據(jù)存放到外存儲(chǔ)器的文件中,然后釋放該指向的緩沖區(qū)中的數(shù)據(jù)存放到外存儲(chǔ)器的文件中,然后釋放該緩沖區(qū),使文件指針變量不再指向與該文件對(duì)應(yīng)的緩沖區(qū),使文件指針變量不再指向與該文件對(duì)應(yīng)的FILE結(jié)構(gòu),從而結(jié)構(gòu),從而斷開與文件的關(guān)聯(lián)。斷開與文件的關(guān)聯(lián)。操作正常返回操作正常返回0,否則返回,否則返回EOF(是在(是在stdio.h文件中定義的符號(hào)常文件中定義的符號(hào)常量,值為量,值為-1)。)。文件文件FILE *fp;fclose(fp); 如果不關(guān)閉文件,將會(huì)丟失數(shù)據(jù),并如果不關(guān)閉文

9、件,將會(huì)丟失數(shù)據(jù),并且一個(gè)且一個(gè)C程序能同時(shí)打開的文件數(shù)有限,程序能同時(shí)打開的文件數(shù)有限,應(yīng)該養(yǎng)成在使用完文件后關(guān)閉文件的應(yīng)該養(yǎng)成在使用完文件后關(guān)閉文件的習(xí)慣。習(xí)慣。文件操作文件操作文件操作的一般步驟文件操作的一般步驟文件文件/* 定義聲明文件指針定義聲明文件指針 */FILE *fp;/* 打開文件打開文件 */fp = fopen(文件名文件名, r); /* 判斷是否打開文件判斷是否打開文件 */if (fp = NULL) /* 當(dāng)文件打開失敗時(shí)的處理當(dāng)文件打開失敗時(shí)的處理 */ /* 對(duì)文件進(jìn)行讀寫操作對(duì)文件進(jìn)行讀寫操作 */ /* 關(guān)閉文件關(guān)閉文件 */fclose(fp);文件的

10、讀寫文件的讀寫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ù)后,文件位置指針自動(dòng)跳到下一個(gè)讀寫位置。在讀寫數(shù)據(jù)后,文件位置指針自動(dòng)跳到下一個(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ù)前,需要將文件位置

11、指針文件位置指針移到讀寫位置。移到讀寫位置。當(dāng)文件以讀或?qū)懛绞酱蜷_,文件位置指針設(shè)置在文件頭,若文件以當(dāng)文件以讀或?qū)懛绞酱蜷_,文件位置指針設(shè)置在文件頭,若文件以附加方式打開,位置設(shè)置在文件末尾。附加方式打開,位置設(shè)置在文件末尾。文件文件字符的讀寫字符的讀寫讀字符讀字符fgetc()函數(shù)函數(shù)從指定文件讀入一個(gè)字符,該文件必須是以讀或讀寫方式打開。從指定文件讀入一個(gè)字符,該文件必須是以讀或讀寫方式打開。返回值:返回值: 調(diào)用成功時(shí)返回讀入的字符;調(diào)用成功時(shí)返回讀入的字符; 文件結(jié)束時(shí)返回文件結(jié)束符文件結(jié)束時(shí)返回文件結(jié)束符EOF。舉例舉例 表示從文件指針變量表示從文件指針變量fp指向的文件中讀出一個(gè)

12、字符,賦給字符變量指向的文件中讀出一個(gè)字符,賦給字符變量ch文件文件ch = fgetc(fp);字符的讀寫字符的讀寫文件位置指針文件位置指針文件型數(shù)據(jù)結(jié)構(gòu)中,用文件位置指針指向當(dāng)前對(duì)文件進(jìn)行文件型數(shù)據(jù)結(jié)構(gòu)中,用文件位置指針指向當(dāng)前對(duì)文件進(jìn)行讀寫操作的位置。讀寫操作的位置。在文件打開時(shí),該指針總是指向文件的第一個(gè)字節(jié)。讀寫文件時(shí),在文件打開時(shí),該指針總是指向文件的第一個(gè)字節(jié)。讀寫文件時(shí),每讀寫一個(gè)字符后,該位置指針的值會(huì)自動(dòng)加每讀寫一個(gè)字符后,該位置指針的值會(huì)自動(dòng)加1,指向下一個(gè)字符。,指向下一個(gè)字符。改變位置指針的值,也就改變了下一次讀寫操作在文件中執(zhí)行時(shí)的改變位置指針的值,也就改變了下一次

13、讀寫操作在文件中執(zhí)行時(shí)的位置。位置。文件文件文件位置指針文件位置指針字符的讀寫字符的讀寫文件結(jié)束文件結(jié)束問題問題使用使用fgetc()函數(shù),文件結(jié)束時(shí)返回文件結(jié)束符函數(shù),文件結(jié)束時(shí)返回文件結(jié)束符EOF,其值為,其值為-1。這。這在對(duì)文本文件操作時(shí)不會(huì)產(chǎn)生問題。但對(duì)二進(jìn)制文件進(jìn)行讀操作時(shí),在對(duì)文本文件操作時(shí)不會(huì)產(chǎn)生問題。但對(duì)二進(jìn)制文件進(jìn)行讀操作時(shí),由于由于-1是二進(jìn)制數(shù)的合法值,故將影響文件數(shù)據(jù)的讀取。是二進(jìn)制數(shù)的合法值,故將影響文件數(shù)據(jù)的讀取。為解決此問題,為解決此問題,ANSI C提供了專門判斷文件結(jié)束的函數(shù)提供了專門判斷文件結(jié)束的函數(shù)feof()。feof()函數(shù)函數(shù)feof(文件指針文件

14、指針);判斷文件位置指針是否已至文件尾判斷文件位置指針是否已至文件尾 返回值:返回值: 函數(shù)返回值為函數(shù)返回值為1時(shí)表示已至文件尾部;時(shí)表示已至文件尾部; 為為0時(shí)則還未到文件結(jié)束處。時(shí)則還未到文件結(jié)束處。文件文件字符的讀寫字符的讀寫寫字符寫字符fputc()函數(shù)函數(shù)fputc(字符量,文件指針字符量,文件指針); 將一個(gè)字符寫到磁盤文件上去將一個(gè)字符寫到磁盤文件上去返回值:返回值: 調(diào)用成功時(shí)返回輸出的字符;調(diào)用成功時(shí)返回輸出的字符; 失敗時(shí)返回失敗時(shí)返回EOF。舉例舉例 表示向文件指針變量表示向文件指針變量fp指向的文件寫入一個(gè)字符指向的文件寫入一個(gè)字符a。文件文件fputc(a, fp)

15、;案例分析:字符的讀寫案例分析:字符的讀寫問題問題打開打開“c:infile.c”文件,然后將其復(fù)制到文件,然后將其復(fù)制到“c:outfile.c”。源代碼源代碼文件文件#include stdio.h#include stdlib.hvoid 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,

16、 w) = NULL) printf(Cannot open outfile.c.n); exit(0); while(!feof(infp) if (ch = fgetc(infp) != EOF) fputc(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è)字符之前遇到換行符或

17、文件結(jié)束符EOF,讀入即結(jié)束。,讀入即結(jié)束。返回值:字符數(shù)組的地址。返回值:字符數(shù)組的地址。舉例舉例 從從fp所指的文件中讀出所指的文件中讀出n-1個(gè)字符送入字符數(shù)組個(gè)字符送入字符數(shù)組str中。中。文件文件fgets(str, n, fp);字符串的讀寫字符串的讀寫寫字符串寫字符串fputs()函數(shù)函數(shù)fputs(字符數(shù)組名字符數(shù)組名, 文件指針文件指針); 向指定的文件輸出一個(gè)字符串,向指定的文件輸出一個(gè)字符串,0結(jié)束符不輸出。其中字符串結(jié)束符不輸出。其中字符串可以是字符串常量、字符數(shù)組名或指針變量??梢允亲址A?、字符數(shù)組名或指針變量。返回值:返回值: 調(diào)用成功時(shí),返回調(diào)用成功時(shí),返回0

18、; 否則返回否則返回EOF。舉例舉例 其意義是把字符串其意義是把字符串“abcd”寫入寫入fp所指的文件之中。所指的文件之中。文件文件fputs(“abcd”, fp);案例分析:字符串的讀寫案例分析:字符串的讀寫問題問題從鍵盤上輸入一串字符,寫入文本文件從鍵盤上輸入一串字符,寫入文本文件“abc.c”中,再將中,再將文本文件的內(nèi)容讀出,顯示在屏幕上。文本文件的內(nèi)容讀出,顯示在屏幕上。源代碼源代碼文件文件#include stdio.h#include stdlib.hvoid main() FILE *fp; char str100, ch; if(fp = fopen(c:abc.c, w

19、) = NULL) printf( error.n); exit(0);案例分析:字符串的讀寫案例分析:字符串的讀寫源代碼源代碼文件文件printf(請(qǐng)輸入一串字符:請(qǐng)輸入一串字符: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(文件指針文件指針

20、, ”格式控制字符串格式控制字符串”, 地址表列地址表列); 從指定的文件中格式化讀數(shù)據(jù)。從指定的文件中格式化讀數(shù)據(jù)。這個(gè)函數(shù)與格式輸入函數(shù)這個(gè)函數(shù)與格式輸入函數(shù)scanf( )很相似,它們的區(qū)別在于,很相似,它們的區(qū)別在于,scanf( )函數(shù)是從鍵盤輸入數(shù)據(jù),而函數(shù)是從鍵盤輸入數(shù)據(jù),而fscanf( )函數(shù)是從文件讀入數(shù)函數(shù)是從文件讀入數(shù)據(jù),因此在據(jù),因此在fscanf( )函數(shù)參數(shù)中多了一個(gè)文件指針,用于指出從哪函數(shù)參數(shù)中多了一個(gè)文件指針,用于指出從哪個(gè)文件讀入數(shù)據(jù)。個(gè)文件讀入數(shù)據(jù)。舉例舉例 表示從磁盤文件中的讀取一個(gè)浮點(diǎn)數(shù)和一個(gè)整數(shù),分別存入變量表示從磁盤文件中的讀取一個(gè)浮點(diǎn)數(shù)和一個(gè)整

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

22、出將數(shù)據(jù)輸出函數(shù)參數(shù)中多了一個(gè)文件指針,用于指出將數(shù)據(jù)輸出到哪個(gè)文件中。到哪個(gè)文件中。舉例舉例 表示把變量表示把變量f和和d按指定的格式寫入磁盤文件。按指定的格式寫入磁盤文件。文件文件fprintf(fp, “f=%f, d=%dn”, f, d);數(shù)據(jù)塊的讀寫數(shù)據(jù)塊的讀寫以數(shù)據(jù)塊方式讀寫文件以數(shù)據(jù)塊方式讀寫文件fscanf()函數(shù)和函數(shù)和fprintf()函數(shù)對(duì)磁盤文件讀寫,使用方便,函數(shù)對(duì)磁盤文件讀寫,使用方便,易理解。但輸入輸出需要轉(zhuǎn)化。易理解。但輸入輸出需要轉(zhuǎn)化。因此,在內(nèi)存與磁盤頻繁交換數(shù)據(jù)的情況下,最好用因此,在內(nèi)存與磁盤頻繁交換數(shù)據(jù)的情況下,最好用fread()和和fwrite(

23、)函數(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ù),文件指針文件指針);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ù),文件指針文件指針);通常用于對(duì)二進(jìn)制文件的讀寫操作。通常用于對(duì)二進(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)部的位置按要求移動(dòng)位置指針,是實(shí)現(xiàn)隨機(jī)讀寫的關(guān)鍵。按要求移動(dòng)位置指針,

24、是實(shí)現(xiàn)隨機(jī)讀寫的關(guān)鍵。rewind()函數(shù)函數(shù)rewind(文件指針文件指針);使位置指針重新返回到文件的開頭,函數(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));改變文件的位置指針。改變文件的位置指針。其中,其中,

25、 文件指針:是文件打開時(shí)返回的文件指針。文件指針:是文件打開時(shí)返回的文件指針。 位移量:是指以起始點(diǎn)為基點(diǎn),向前向后移動(dòng)的字節(jié)數(shù),可以為負(fù)值。位移量:是指以起始點(diǎn)為基點(diǎn),向前向后移動(dòng)的字節(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)名字名字?jǐn)?shù)字代號(hào)數(shù)字代號(hào)文件開始文件開始SEEK_SET SEEK_SET 0 0 當(dāng)前位置當(dāng)前位置SEEK_CURSEEK_CU

26、R1 1文件末尾文件末尾SEEK_ENDSEEK_END2 2案例分析:文件的隨機(jī)讀寫案例分析:文件的隨機(jī)讀寫問題問題設(shè)文件設(shè)文件“alphabet.c”中存放了字母表中存放了字母表“AZ”,現(xiàn)在打開,現(xiàn)在打開這個(gè)文件,用從尾部倒著讀的方式將其信息讀出并送屏幕這個(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時(shí),定位于字母時(shí),定位于字母Z */ putchar(fg

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論