C語言程序設(shè)計第7章_第1頁
C語言程序設(shè)計第7章_第2頁
C語言程序設(shè)計第7章_第3頁
C語言程序設(shè)計第7章_第4頁
C語言程序設(shè)計第7章_第5頁
已閱讀5頁,還剩64頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第7章章 文件文件7.1 7.1 文件概述文件概述 7.2 7.2 文件的打開和關(guān)閉文件的打開和關(guān)閉 7.3 7.3 文件的順序讀寫文件的順序讀寫 7.4 7.4 文件的定位與隨機讀寫文件的定位與隨機讀寫 7.5 7.5 文件狀態(tài)檢查函數(shù)文件狀態(tài)檢查函數(shù) 7.6 7.6 文件輸入文件輸入/ /輸出小結(jié)輸出小結(jié) 7.1 文件概述7.1.1 7.1.1 文件的概念文件的概念 7.1.2 7.1.2 文件的分類文件的分類 7.1.3 7.1.3 文件的訪問方式文件的訪問方式 7.1.4 7.1.4 文件類型指針文件類型指針 7.1.5 7.1.5 文件的處理過程文件的處理過程 7.1.1 文件的概

2、念文件的概念文件的定義: 文件是指一組相關(guān)數(shù)據(jù)的有序集合,它是存儲在外部介質(zhì)上數(shù)據(jù)的集合體。 程序文件指的是程序代碼的集合體,而數(shù)據(jù)文件則是已處理(或待處理)數(shù)據(jù)的集合體。 對文件而言,最基本的操作就是讀操作和寫操作。7.1.1 文件的概念文件的概念 緩沖型文件系統(tǒng)的文件讀/寫示意圖7.1.2 文件的分類文件的分類 C語言中的文件文件亦稱流式文件,其內(nèi)容是由一個個的字符(或字節(jié))按一定的順序組成的,這里的字符或字節(jié)序列稱之為字節(jié)流。 根據(jù)數(shù)據(jù)的存儲形式,C語言中的文件可分為文本文件和二進制文件兩種。 文本文件 以ASCII碼字符形式存儲的文件稱為文本文件,又叫ASCII文件。在文本文件中,存貯

3、一個字符需要一個字節(jié),雖然此時處理字符比較方便,但文本文件一般要占用較大的存儲空間。 二進制文件 在二進制文件中,數(shù)據(jù)是以二進制的形式存貯的,結(jié)構(gòu)緊湊利于節(jié)省大量的磁盤空間。 由于二進制文件中的一個字節(jié)并不直接對應(yīng)著一個字符,因此數(shù)據(jù)需要轉(zhuǎn)換后才能以字符的形式輸出; 7.1.3 文件的訪問方式文件的訪問方式 文件的訪問形式可分為順序訪問和隨機訪問兩種。順序訪問又稱為順序讀寫,隨機訪問又叫隨機讀寫。 有時也把進行順序讀寫操作的文件稱為順序文件,而把進行隨機讀寫操作的文件稱為隨機文件。 無論是順序文件還是隨機文件,在文件內(nèi)部專門設(shè)置了一個指向當前讀寫位置的指針,就象在一部電梯中用樓層顯示器來指示當

4、前所處的樓層。 7.1.3 文件的訪問方式文件的訪問方式 在順序文件中,讀寫位置指針總是按照字節(jié)的順序由前往后移動,每當讀完一個字符,指針會自動地移到下一個字符的位置上。因此對文件的操作只能按順序進行。 在隨機文件中,讀寫位置指針可以根據(jù)需要自由地移到文件的任意位置上。也就是說在隨機文件中,讀完了一個字符之后,不一定非得要讀下一個字符,而是可以重新調(diào)整位置指針的值,使其指向文件的其它位置,這樣就可以隨意訪問文件了。 7.1.4 文件類型指針文件類型指針 正在使用的文件的信息(如文件名、文件狀態(tài)、數(shù)據(jù)緩沖區(qū)的位置、文件讀寫的當前位置等)都被保存在一個特定的結(jié)構(gòu)類型變量中,該變量稱為文件結(jié)構(gòu)變量(

5、或FILE類型變量)。 FILE類型的定義如下:7.1.5 文件的處理過程文件的處理過程C語言對文件處理的步驟如下: 第一步:打開文件 第二步:讀文件或者寫文件,其中讀文件是指從文件中讀取數(shù)據(jù),寫文件指的是把數(shù)據(jù)寫到文件中去 第三步:關(guān)閉文件7.1.5 文件的處理過程文件的處理過程 在對文件進行操作之前,必須事先定義一個指向FILE類型的指針變量,該變量稱為“文件類型指針變量” 。 指向文件類型的指針變量的定義格式: FILE *指針變量名;例如: FILE *fp; FILE *fp1,*fp2,*fp3; /* 如果程序中要同時處理3個文件,則要定義3個文件類型指針變量 */7.1.5 文

6、件的處理過程文件的處理過程 在C語言中,當程序運行時,系統(tǒng)都會自動打開三個標準文件:標準輸入、標準輸出和標準出錯輸出,它們分別對應(yīng)著下述的文件類型指針名:stdin : 標準輸入文件的文件指針stdout:標準輸出文件的文件指針stderr:標準出錯輸出文件的文件指針 由于標準文件是受系統(tǒng)控制的,其打開和關(guān)閉都由系統(tǒng)自動完成,因此在程序中這三個標準的文件類型指針,它不需要用戶進行的單獨定義或說明,能夠直接使用,區(qū)別與一般文件的打開和關(guān)閉操作。 7.1.5 文件的處理過程文件的處理過程 例例7.17.1 產(chǎn)生100以內(nèi)的全部偶數(shù),要求把這些數(shù)據(jù)寫入到C盤根目錄下一個名為even246.dat的文

7、本文件中去。 7.1.5 文件的處理過程文件的處理過程 例例7.27.2打開由例7.1創(chuàng)建的數(shù)據(jù)文件even246.dateven246.dat,要求讀取文件中的偶數(shù),并按每行十個數(shù)的格式將它們顯示在屏幕上。7.2 文件的打開和關(guān)閉 7.2.1 7.2.1 打開文件的函數(shù)打開文件的函數(shù)7.2.2 7.2.2 關(guān)閉文件的函數(shù)關(guān)閉文件的函數(shù)7.2.1 打開文件的函數(shù)打開文件的函數(shù)函數(shù)原型函數(shù)原型:FILE FILE * *fopen(char fopen(char * *pname, char pname, char * *mode)mode)函數(shù)功能函數(shù)功能: 按指定的mode方式打開由pnam

8、e指向的文件。參數(shù)說明參數(shù)說明:pname:代表指向文件名字符串的指針變量mode:給出文件打開后的處理方式(如表7.1所示)函數(shù)返回值函數(shù)返回值: 若文件能正常打開,則返回值為一個指向被打開文件的指針,反之返回NULL值(即空地址)。表7.1 函數(shù)fopen()中的參數(shù)說明 7.2.1 打開文件的函數(shù)打開文件的函數(shù) 當出現(xiàn)下述情況中的任何一種時,數(shù)據(jù)文件將不能正確被打開:l 用”r”方式打開一個并不存在的文件l 磁盤讀寫錯誤l 在新建文件時,由于磁盤的剩余空間不夠,不足以創(chuàng)建新的文件 當上述情況發(fā)生時,函數(shù)fopen() 將返回一個空指針NULL表示出錯7.2.1 打開文件的函數(shù)打開文件的函

9、數(shù) 在實際編程時,通常采用下述這種帶if結(jié)構(gòu)的程序段來打開文件,增強了程序的靈活性。7.2.27.2.2 關(guān)閉文件的函數(shù)關(guān)閉文件的函數(shù)函數(shù)原型函數(shù)原型:int fclose(FILE *fp)函數(shù)功能函數(shù)功能:關(guān)閉fp所指向的文件參數(shù)說明參數(shù)說明:fp為文件類型指針返回值返回值: 如果文件能正常關(guān)閉,則函數(shù)返回值為0;反之當文件關(guān)閉出現(xiàn)錯誤時,返回值為EOF,此時可用ferror()函數(shù)來測試。注意事項注意事項: 當某個應(yīng)用程序結(jié)束時,假設(shè)文件緩沖區(qū)中的數(shù)據(jù)未滿,如果此時未正常關(guān)閉文件,那么保存在文件緩沖區(qū)中的數(shù)據(jù)將會丟失。 因此,當文件不再需要使用時,應(yīng)及時關(guān)閉文件。這樣做能把暫存在文件緩沖

10、區(qū)中的數(shù)據(jù)全部寫入文件之中,從而保證了數(shù)據(jù)的完整性,避免數(shù)據(jù)的丟失 。 7.3 文件的順序讀寫文件的順序讀寫7.3.1 7.3.1 文本文件的順序讀寫文本文件的順序讀寫 7.3.2 7.3.2 二進制文件的順序讀寫二進制文件的順序讀寫7.3.1 文文本文件的順序讀寫本文件的順序讀寫 字符的輸入函數(shù)字符的輸入函數(shù)fgetc( )fgetc( )和和getc( )getc( )函數(shù)原型函數(shù)原型:int fgetc(FILE int fgetc(FILE * *fp)fp) int getc(FILE int getc(FILE * *fp)fp)函數(shù)功能函數(shù)功能: 兩個函數(shù)都是從fp所指定的文件中

11、讀取一個字符參數(shù)說明參數(shù)說明: fp是一個文件類型指針,它指向要讀的文件。返回值返回值: 如果正常返回,則返回讀取的字符代碼,否則返回EOF;如果讀到文件結(jié)束符(z)時,也返回EOF。7.3.1 文文本文件的順序讀寫本文件的順序讀寫 字符的輸出函數(shù)字符的輸出函數(shù)fputc( )fputc( )和和putc( )putc( )函數(shù)原型函數(shù)原型:int fputc(char ch, FILE int fputc(char ch, FILE * *fp)fp) int putc(char ch, FILE int putc(char ch, FILE * *fp)fp)函數(shù)功能函數(shù)功能: 把字符ch

12、寫入到fp所指定的文件中去參數(shù)說明參數(shù)說明: ch為整型(或字符型)變量(或常量),fp是文件指針返回值返回值: 在文件的當前讀寫位置寫入一個字符,若字符寫入成功,則函數(shù)返回該字符的ASCII值,反之將返回EOF。 TC集成開發(fā)環(huán)境下的文件操作方法 假設(shè)目前處在假設(shè)目前處在TCTC的集成開發(fā)環(huán)境(的集成開發(fā)環(huán)境(IDEIDE)之中。若想從)之中。若想從IDEIDE切換到切換到MS-MS-DOSDOS方式下,請執(zhí)行方式下,請執(zhí)行FileFile菜單下的菜單下的OS shellOS shell命令,隨后屏幕立即出現(xiàn)命令,隨后屏幕立即出現(xiàn)MS-MS-DOSDOS畫面,圖中命令提示符最左邊的畫面,圖中

13、命令提示符最左邊的D:TC2D:TC2就是當前的缺省目錄。就是當前的缺省目錄。 此時如果想從MS-DOS方式下重新返回到TC的IDE狀態(tài),則在命令提示符的光標處敲入命令exit即可。 exit MSDOS中的type命令簡介 type命令是MS-DOS中的一條內(nèi)部命令,用于屏幕顯示某一個指定的文本文件的內(nèi)容,在MS-DOS方式下使用type命令的格式為: typetype 驅(qū)動器名驅(qū)動器名路徑名路徑名 一個被指定的文本文件名一個被指定的文本文件名.擴展名擴展名 注意事項:注意事項: 在使用type命令時,每次顯示的文本文件只能是一個,不能通過使用文件的通配符(*或?)來達到一次顯示多個文本文件

14、的目的。另外,被指定的文本文件如果有擴展名的,則在命令行格式中一定要補寫上,省略不寫是不行的。 在type命令中如果省略了驅(qū)動器名和路徑名這兩個選項,則表示被要求顯示的那個文本文件處在當前驅(qū)動器的當前目錄下(如前面所說的D:TC2)。 7.3.1 文文本文件的順序讀寫本文件的順序讀寫 例例7.37.3 創(chuàng)建文本文件。首先從鍵盤上輸入一個文件名,然后鍵入一些字符,要求把這些字符逐個寫入到剛才指定的那個文本文件中去,直到輸入“”結(jié)束。7.3.1 文文本文件的順序讀寫本文件的順序讀寫例7.3 完整的運行過程如下圖所示 第第1步:輸入數(shù)據(jù)文件名:步:輸入數(shù)據(jù)文件名:1st.dat第第2步:步:輸入文件

15、內(nèi)容,最后以輸入文件內(nèi)容,最后以符號結(jié)束符號結(jié)束第第3步:步:通過通過type命令顯示該文本文件的內(nèi)容命令顯示該文本文件的內(nèi)容 7.3.1 文文本文件的順序讀寫本文件的順序讀寫 例例7.47.4復(fù)制文本文件。要求把第一個文本文件的內(nèi)容全部復(fù)制到第二個文本文件中去。稱第一個文件為源文件,稱第二個文件為目標文件。 假設(shè)復(fù)制之前源文件已經(jīng)存在了。源文件名和目標文件名要求在程序運行時由鍵盤輸入。 7.3.1 文文本文件的順序讀寫本文件的順序讀寫 例7.4運行時首先要求輸入源文件名和目標文件名,這里假設(shè)源文件名為1st.dat1st.dat,目標文件名為2nd.dat2nd.dat,其中源文件1st.d

16、at1st.dat已經(jīng)由例例7.37.3產(chǎn)生好了。運行過程如下:Enter the source filename:1st.dat(輸入源磁盤文件名)Enter the target filename:2nd.dat(輸入目標磁盤文件名) 當文件復(fù)制結(jié)束后,為了驗證目標文件2nd.dat的內(nèi)容是否和源文件1st.dat的完全相同,可以在MS-DOS方式下分別執(zhí)行下面這兩條type命令:type 1st.dattype 1st.dat (顯示源文件的內(nèi)容)type 2nd.dattype 2nd.dat (顯示目標文件的內(nèi)容) 7.3.1 文文本文件的順序讀寫本文件的順序讀寫 字符串輸入函數(shù)字符

17、串輸入函數(shù)fgets( )fgets( ) 函數(shù)原型:char *fgets(char *str, int n, FILE *fp) 函數(shù)功能: 從指定的文件中讀取一個字符串參數(shù)說明: str為讀取到的字符串的地址,可以是指針變量或數(shù)組;n為限定讀取的字符個數(shù);fp為指定讀取的文件。返回值: 從文件fp的當前讀寫位置開始,最多讀出(n-1)個字符(包括換行符),同時將字符串結(jié)束標志0也復(fù)制到str中去。正常返回值為str的首地址,當讀到文件末尾或出錯時,返回NULL。 7.3.1 文文本文件的順序讀寫本文件的順序讀寫 字符串輸入函數(shù)字符串輸入函數(shù)fgets( )fgets( ) 函數(shù)原型:ch

18、ar *fgets(char *str, int n, FILE *fp) 函數(shù)功能: 從指定的文件中讀取一個字符串參數(shù)說明: str為讀取到的字符串的地址,可以是指針變量或數(shù)組;n為限定讀取的字符個數(shù);fp為指定讀取的文件。返回值: 從文件fp的當前讀寫位置開始,最多讀出(n-1)個字符(包括換行符),同時將字符串結(jié)束標志0也復(fù)制到str中去。正常返回值為str的首地址,當讀到文件末尾或出錯時,返回NULL。 7.3.1 文文本文件的順序讀寫本文件的順序讀寫 例例7.57.5 將從鍵盤上輸入的若干行字符寫到一個名為 mystring.datmystring.dat 的文本文件中去,假設(shè)每行字

19、符串的長度不超過80。7.3.1 文文本文件的順序讀寫本文件的順序讀寫例例7.57.5運行示范 在調(diào)用函數(shù)list_1( )從文件中逐個讀取字符時,顯示的結(jié)果表明保存在文件中的每個字符串都已經(jīng)是以換行符n結(jié)束的。 而在調(diào)用函數(shù)list_2( )時,屏幕顯示結(jié)果中出現(xiàn)了空行,每輸出完一行數(shù)據(jù)后都空了一行,除了說明文件中已經(jīng)存有換行符n之外,還說明用puts()輸出字符串時會自動換行。 7.3.1 文文本文件的順序讀寫本文件的順序讀寫 格式化輸入函數(shù)格式化輸入函數(shù)fscanf( )fscanf( )原型:原型: int fscanf(FILE *fp, “輸入格式描述串輸入格式描述串”, 輸入項地

20、址表列輸入項地址表列) 函數(shù)功能:函數(shù)功能: 按照“輸入格式描述串”所指定的格式,從文件fp的當前讀寫位置開始讀取若干個數(shù)據(jù),然后把數(shù)據(jù)按“輸入項地址表列”的順序存入指定的存儲單元中參數(shù)說明:參數(shù)說明: fp為文件指針,“輸入格式描述串”與scanf()函數(shù)中的輸入格式描述串相同,“輸入項地址表列”為從指定文件中讀入數(shù)據(jù)的存放地址,各輸入項之間用逗號分隔。 返回值:返回值:函數(shù)返回值為所輸入的數(shù)據(jù)個數(shù),如果遇到文件結(jié)束符時,返回值為EOF,此時feof(fp)為真。7.3.1 文文本文件的順序讀寫本文件的順序讀寫 格式化輸出函數(shù)格式化輸出函數(shù)fprintf( )fprintf( )原型:原型:

21、 int fprintf(FILE *fp, “輸出格式描述串輸出格式描述串”, 輸出項表列輸出項表列) 函數(shù)功能:函數(shù)功能: 按照“輸出格式描述串”中所指定的格式,依次把“輸出項表列”中的各項數(shù)據(jù)寫入文件fp 參數(shù)說明:參數(shù)說明: fp是文件類型指針,它指向輸出的文件;“輸出格式描述串”為給定的輸出格式,與print()函數(shù)的輸出格式描述串相同返回值:返回值:正常返回值為輸出的數(shù)據(jù)個數(shù),如果出錯,則返回EOF值。 例例7.67.6 學(xué)生基本信息包括學(xué)號、三門課的單科成績和三門課的平均分。要求創(chuàng)建一 個 名 為stu.txt的文本文件,把從鍵盤上輸入數(shù)據(jù)全部按照格式化寫的形式輸出到文本文件中去

22、。 7.3.1 文文本文件的順序讀寫本文件的順序讀寫例例7.67.6運行示范 7.3.1 文文本文件的順序讀寫本文件的順序讀寫 例例7.77.7學(xué)生基本信息同例7.6,要求把例7.6中創(chuàng)建的文件按照格式化讀的形式顯示在屏幕上。 例例7.87.8假設(shè)學(xué)生的數(shù)據(jù)信息已經(jīng)按照平均分從高到低的順序,保存在一個名為sorted.txt的文本文件中了。現(xiàn)在從鍵盤上輸入另一個新生的基本信息,要求在文件中插入新記錄,并且仍然要保持原來的有序性。 7.3.27.3.2 二進制文件的順序讀寫二進制文件的順序讀寫數(shù)據(jù)塊輸入函數(shù)數(shù)據(jù)塊輸入函數(shù)freadfread( ) ( ) 函數(shù)原型函數(shù)原型:int fread(v

23、oid *buffer, unsigned size, unsigned number, FILE *fp) 函數(shù)功能函數(shù)功能: 從fp所指定的文件中以二進制形式讀取數(shù)據(jù)塊 參數(shù)說明參數(shù)說明: 參數(shù)buffer為指針變量,用于指向某個存儲區(qū)的首地址,參數(shù)size為一次讀入的字節(jié)數(shù),參數(shù)number為讀操作的次數(shù);參數(shù)fp為文件指針 返回值返回值: 函數(shù)正常調(diào)用后返回值為參數(shù)number的值,如果遇到文件結(jié)束(或者發(fā)生讀數(shù)錯誤)時,返回值為0 7.3.27.3.2 二進制文件的順序讀寫二進制文件的順序讀寫例例:fread(address, 4, 5, fp);表示從fp文件中前后反復(fù)讀取5次數(shù)據(jù)

24、,每次讀取的數(shù)據(jù)為4個字節(jié),所有這些數(shù)據(jù)被保存到存儲區(qū)address中。例例:struct student int number; char name20;stud30;for(i=0; i30; i+) fread(&studi, sizeof(struct student), 1, fp);通過循環(huán)從fp文件中讀取30個學(xué)生的基本信息,每調(diào)用一次fread()函數(shù)將讀出一個學(xué)生的信息,所有這些信息都被保存在一個名為stud的結(jié)構(gòu)數(shù)組中7.3.27.3.2 二進制文件的順序讀寫二進制文件的順序讀寫 運算符運算符sizeofsizeof用來返回某個表達式(或者某種數(shù)據(jù)類型)的字節(jié)數(shù),使

25、用格式如用來返回某個表達式(或者某種數(shù)據(jù)類型)的字節(jié)數(shù),使用格式如下:下: sizeof(sizeof(表達式表達式) ) 或者或者 sizeof(sizeof(數(shù)據(jù)類型名數(shù)據(jù)類型名) )例例7.97.9 運算符sizeof使用示例。 7.3.2 二進制文件的順序讀寫數(shù)據(jù)塊輸出函數(shù)數(shù)據(jù)塊輸出函數(shù)fwrite( )fwrite( )函數(shù)原型函數(shù)原型:int fwrite(const void *buffer, unsigned size, unsigned number, FILE *fp) 函數(shù)功能函數(shù)功能: 將保存在buffer存儲區(qū)中的數(shù)據(jù)以二進制的形式寫入fp文件 參數(shù)說明參數(shù)說明: 參

26、數(shù)buffer為指針變量,它指向某個存儲區(qū)的首地址,參數(shù)size為要輸出的字節(jié)數(shù),參數(shù)number表示寫操作的次數(shù),參數(shù)fp用來指定輸出文件 返回值返回值: 函數(shù)正常調(diào)用返回值為number的值,如果文件輸出結(jié)束或出錯時,則返回值為0 7.3.27.3.2 二進制文件的順序讀寫二進制文件的順序讀寫例:struct student int number; char name20;stud30;for(i=0; i30; i+) fwrite(&studi,sizeof(struct student),1,fp); 假設(shè)30個學(xué)生的基本信息都已經(jīng)保存在結(jié)構(gòu)數(shù)組stud中,通過循環(huán)每次調(diào)用f

27、write()函數(shù),就把全部數(shù)組元素寫到文件fp中去了 例例7.107.10 從鍵盤上輸入10個實數(shù),以二進制的形式存入一個名為ten.dat的文件中。 (接下頁) 例例7.107.10 從鍵盤上輸入10個實數(shù),以二進制的形式存入一個名為ten.dat的文件中。 (接上頁) 例例7.117.11學(xué)生基本信息包括學(xué)號、三門課的單科成績和平均分。從鍵盤上輸入數(shù)據(jù),要求創(chuàng)建一個名為stud.bin的二進制文件例例7.117.11運行結(jié)果示范運行結(jié)果示范字輸入函數(shù)getw()函數(shù)原型函數(shù)原型:int getw(FILE int getw(FILE * *fp)fp)函數(shù)功能函數(shù)功能: 從fp指定的文件

28、中以二進制的形式讀取一個字(word)參數(shù)說明參數(shù)說明: fp為文件指針返回值返回值: 正常返回值為所讀取的二進制整數(shù)。若碰到文件結(jié)束或者讀寫錯誤這兩種情況,則返回值為EOF例:i=getw(fp);i=getw(fp); 從fp文件中讀取一個整數(shù),將其保存到變量i中字輸出函數(shù)putw()函數(shù)原型函數(shù)原型:int putw(int n, FILE int putw(int n, FILE * *fp)fp) 函數(shù)功能函數(shù)功能: 以二進制形式將一個int型的數(shù)據(jù)寫到fp所指定的文件中去 參數(shù)說明參數(shù)說明: n為要寫到fp所指定文件中的整數(shù),fp為文件指針 返回值返回值:正常返回的值為輸出的整數(shù)n

29、,非正常返回值為EOF例:putw(10, fp); 把整數(shù)10寫到fp所指定的文件中去 7.47.4 文件的定位與隨機讀寫文件的定位與隨機讀寫7.4.1 rewind()函數(shù)函數(shù) 函數(shù)原型函數(shù)原型:void rewind(FILE *fp) 函數(shù)功能函數(shù)功能: 將文件的讀/寫位置指針重新指向文件的開頭 參數(shù)說明參數(shù)說明: fp為文件指針 返回值返回值: 無返回值7.4.1 rewind()函數(shù)函數(shù)例例7.127.12 rewind()rewind()函數(shù)使用舉例。本例用來實現(xiàn)兩個文件的復(fù)制,源函數(shù)使用舉例。本例用來實現(xiàn)兩個文件的復(fù)制,源文件名為文件名為file1.datfile1.dat,目

30、標文件名為,目標文件名為file2.datfile2.dat。 7.4.2 fseek()函數(shù)函數(shù) 函數(shù)原型函數(shù)原型: int fseek(FILE *fp,long offset, int whence) 函數(shù)功能函數(shù)功能: 把文件fp的讀寫位置指針調(diào)整到相對whence來說是offset的地方 7.4.2 fseek()函數(shù)函數(shù)下面是幾個調(diào)用fseek( )函數(shù)的例子:fseek(fp,10L,SEEK_SET); 將位置指針移動到離文件頭10個字節(jié)位置fseek(fp,20L,1); 將位置指針移到離當前位置20個字節(jié)的位置fseek(fp,-50L,2); 將位置指針移到距離文件末尾5

31、0個字節(jié)的位置 例例7.137.13 學(xué)生基本信息包括學(xué)號、三門課的單科成績和平均分。在例7.11中這些數(shù)據(jù)已經(jīng)保存在一個名為stud.bin的二進制文件中了。 現(xiàn)在想對個別學(xué)生的成績進行更正,根據(jù)鍵盤輸入的學(xué)號來修改文件中原有的數(shù)據(jù)。7.4.3 ftell()函數(shù)函數(shù) 函數(shù)原型函數(shù)原型:long ftell(FILE *fp) 函數(shù)功能函數(shù)功能: 該函數(shù)用于取得流式文件當前的讀寫位置,它是用相對于文件開頭位移量來表示該位置的參數(shù)說明參數(shù)說明: fp為文件指針 返回值返回值: 正常返回值為位移量,返回值為-1表示出錯 7.4.3 ftell()函數(shù)函數(shù)例: n=ftell(fp); if(n=-1)printf(“7 Error!

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論