第10章利用文件保存數(shù)據(jù)ppt課件_第1頁
第10章利用文件保存數(shù)據(jù)ppt課件_第2頁
第10章利用文件保存數(shù)據(jù)ppt課件_第3頁
第10章利用文件保存數(shù)據(jù)ppt課件_第4頁
第10章利用文件保存數(shù)據(jù)ppt課件_第5頁
已閱讀5頁,還剩51頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、10.1 文件的有關(guān)概念文件的有關(guān)概念10.2 文件的打開與關(guān)閉文件的打開與關(guān)閉10.3 文件的順序讀寫文件的順序讀寫10.4 文件的隨機讀寫文件的隨機讀寫10.5 提高部分提高部分P27510.1 文件的有關(guān)概念文件的有關(guān)概念10.1.1 什么是文件10.1.2 文件名10.1.3 文件的分類10.1.4 文件緩沖區(qū)10.1.5 文件指針P27510.1.1 什么是文件什么是文件P275文件有不同的類型,在程序設(shè)計中,主要文件有不同的類型,在程序設(shè)計中,主要用到兩種文件:用到兩種文件:(1) 程序文件。包括源程序文件程序文件。包括源程序文件(后綴為后綴為.c)、目標文件、目標文件(后綴為后綴

2、為.obj)、可執(zhí)行文、可執(zhí)行文件件(后綴為后綴為.exe)等。這種文件的內(nèi)容是程等。這種文件的內(nèi)容是程序代碼。序代碼。10.1.1 什么是文件什么是文件P275文件有不同的類型,在程序設(shè)計中,主要文件有不同的類型,在程序設(shè)計中,主要用到兩種文件:用到兩種文件:(2) 數(shù)據(jù)文件。文件的內(nèi)容不是程序,而數(shù)據(jù)文件。文件的內(nèi)容不是程序,而是供程序運行時讀寫的數(shù)據(jù),如在程序運是供程序運行時讀寫的數(shù)據(jù),如在程序運行過程中輸出到磁盤行過程中輸出到磁盤(或其他外部設(shè)備或其他外部設(shè)備)的的數(shù)據(jù),或在程序運行過程中供讀入的數(shù)據(jù)數(shù)據(jù),或在程序運行過程中供讀入的數(shù)據(jù)。如一批學生的成績數(shù)據(jù),或貨物交易的。如一批學生的

3、成績數(shù)據(jù),或貨物交易的數(shù)據(jù)等。數(shù)據(jù)等。本章主要討論的是數(shù)據(jù)文件本章主要討論的是數(shù)據(jù)文件10.1.1 什么是文件什么是文件P275在以前各章中所處理的數(shù)據(jù)的輸入和輸出在以前各章中所處理的數(shù)據(jù)的輸入和輸出,從終端的鍵盤輸入數(shù)據(jù),運行結(jié)果輸出,從終端的鍵盤輸入數(shù)據(jù),運行結(jié)果輸出到終端顯示器上到終端顯示器上常常需要將一些數(shù)據(jù)輸出到磁盤上保存起常常需要將一些數(shù)據(jù)輸出到磁盤上保存起來,以后使用來,以后使用這就要用到磁盤文件這就要用到磁盤文件10.1.1 什么是文件什么是文件P275操作系統(tǒng)把各種設(shè)備都統(tǒng)一作為文件處理操作系統(tǒng)把各種設(shè)備都統(tǒng)一作為文件處理從操作系統(tǒng)的角度看,每一個與主機相聯(lián)從操作系統(tǒng)的角度看

4、,每一個與主機相聯(lián)的輸入輸出設(shè)備都看作是文件。例如,的輸入輸出設(shè)備都看作是文件。例如,終端鍵盤是輸入文件終端鍵盤是輸入文件顯示屏和打印機是輸出文件顯示屏和打印機是輸出文件10.1.1 什么是文件什么是文件P275“文件指存儲在外部介質(zhì)上數(shù)據(jù)的集合文件指存儲在外部介質(zhì)上數(shù)據(jù)的集合一批數(shù)據(jù)是以文件的形式存放在外部介質(zhì)一批數(shù)據(jù)是以文件的形式存放在外部介質(zhì)上的上的操作系統(tǒng)是以文件為單位對數(shù)據(jù)進行管理操作系統(tǒng)是以文件為單位對數(shù)據(jù)進行管理想找存放在外部介質(zhì)上的數(shù)據(jù),先按文件想找存放在外部介質(zhì)上的數(shù)據(jù),先按文件名找到所指定的文件,然后再從該文件讀名找到所指定的文件,然后再從該文件讀數(shù)據(jù)數(shù)據(jù)要向外部介質(zhì)上存儲

5、數(shù)據(jù)也必須先建立一要向外部介質(zhì)上存儲數(shù)據(jù)也必須先建立一個文件以文件名作為標志),才能向它個文件以文件名作為標志),才能向它輸出數(shù)據(jù)輸出數(shù)據(jù)10.1.1 什么是文件什么是文件P275輸入輸出是數(shù)據(jù)傳送的過程,數(shù)據(jù)如流水輸入輸出是數(shù)據(jù)傳送的過程,數(shù)據(jù)如流水一樣從一處流向另一處,因此常將輸入輸一樣從一處流向另一處,因此常將輸入輸出形象地稱為流出形象地稱為流(stream),即數(shù)據(jù)流。,即數(shù)據(jù)流。流表示了信息從源到目的端的流動。流表示了信息從源到目的端的流動。輸入操作時,數(shù)據(jù)從文件流向計算機內(nèi)存輸入操作時,數(shù)據(jù)從文件流向計算機內(nèi)存輸出操作時,數(shù)據(jù)從計算機流向文件輸出操作時,數(shù)據(jù)從計算機流向文件10.1

6、.1 什么是文件什么是文件P275語言把文件看作是一個字符或字節(jié)語言把文件看作是一個字符或字節(jié)的序列。一個輸入輸出流就是一個字符流的序列。一個輸入輸出流就是一個字符流或字節(jié)或字節(jié)(內(nèi)容為二進制數(shù)據(jù)內(nèi)容為二進制數(shù)據(jù))流。流。10.1.1 什么是文件什么是文件P275的數(shù)據(jù)文件由一連串的字符或字節(jié)的數(shù)據(jù)文件由一連串的字符或字節(jié)組成,中間沒有分隔符,對文件的存取是組成,中間沒有分隔符,對文件的存取是以字符字節(jié)為單位的,允許對文件存以字符字節(jié)為單位的,允許對文件存取一個字符。輸入輸出數(shù)據(jù)流的開始和結(jié)取一個字符。輸入輸出數(shù)據(jù)流的開始和結(jié)束僅受程序控制而不受物理符號如回車束僅受程序控制而不受物理符號如回車

7、換行符控制,這就增加了處理的靈活性換行符控制,這就增加了處理的靈活性。這種文件稱為。這種文件稱為“流式文件流式文件”。10.1.2 文件名文件名P276文件要有一個唯一的文件標識,以便用戶文件要有一個唯一的文件標識,以便用戶識別和引用。識別和引用。文件標識包括文件標識包括3部分:部分:(1)文件路徑文件路徑(2)文件名主干文件名主干(3)文件后綴文件后綴10.1.2 文件名文件名P276文件路徑表示文件在外部存儲設(shè)備中的位文件路徑表示文件在外部存儲設(shè)備中的位置。如:置。如: d: cctempfile1.dat表示表示file1.dat文件存放在文件存放在d盤中的盤中的cc目錄目錄下的下的te

8、mp子目錄下面子目錄下面文件路徑文件路徑文件名主干文件名主干文件后綴文件后綴10.1.2 文件名文件名P276文件路徑表示文件在外部存儲設(shè)備中的位文件路徑表示文件在外部存儲設(shè)備中的位置。如:置。如: d: cctempfile1.dat表示表示file1.dat文件存放在文件存放在d盤中的盤中的cc目錄目錄下的下的temp子目錄下面子目錄下面文件名文件名10.1.2 文件名文件名P276文件路徑表示文件在外部存儲設(shè)備中的位文件路徑表示文件在外部存儲設(shè)備中的位置。如:置。如: d: cctempfile1.dat表示表示file1.dat文件存放在文件存放在d盤中的盤中的cc目錄目錄下的下的te

9、mp子目錄下面子目錄下面命名規(guī)則遵循標命名規(guī)則遵循標識符的命名規(guī)則識符的命名規(guī)則10.1.2 文件名文件名P276文件路徑表示文件在外部存儲設(shè)備中的位文件路徑表示文件在外部存儲設(shè)備中的位置。如:置。如: d: cctempfile1.dat表示表示file1.dat文件存放在文件存放在d盤中的盤中的cc目錄目錄下的下的temp子目錄下面子目錄下面一般不超過一般不超過3個字母個字母doc、txt、dat、c、cpp、obj、exe、ppt、bmp等)等)10.1.3 文件的分類文件的分類P276根據(jù)數(shù)據(jù)的組織形式,數(shù)據(jù)文件可分為根據(jù)數(shù)據(jù)的組織形式,數(shù)據(jù)文件可分為ASCII文件和二進制文件。文件和

10、二進制文件。數(shù)據(jù)在內(nèi)存中是以二進制形式存儲的,如數(shù)據(jù)在內(nèi)存中是以二進制形式存儲的,如果不加轉(zhuǎn)換地輸出到外存,就是二進制文果不加轉(zhuǎn)換地輸出到外存,就是二進制文件件如果要求在外存上以如果要求在外存上以ASCII代碼形式存儲代碼形式存儲,則需要在存儲前進行轉(zhuǎn)換,則需要在存儲前進行轉(zhuǎn)換ASCII文件又稱文本文件,每一個字節(jié)放文件又稱文本文件,每一個字節(jié)放一個字符的一個字符的ASCII代碼代碼10.1.3 文件的分類文件的分類P2760011000100110000001100000011000000110000(1)(0)(0)(0)(0)ASCII形式形式0000000000000000001001

11、1100010000二進制形式二進制形式(10000)10.1.4 文件緩沖區(qū)文件緩沖區(qū)P277ANSI C標準采用標準采用“緩沖文件系統(tǒng)處理數(shù)緩沖文件系統(tǒng)處理數(shù)據(jù)文件據(jù)文件所謂緩沖文件系統(tǒng)是指系統(tǒng)自動地在內(nèi)存所謂緩沖文件系統(tǒng)是指系統(tǒng)自動地在內(nèi)存區(qū)為程序中每一個正在使用的文件開辟一區(qū)為程序中每一個正在使用的文件開辟一個文件緩沖區(qū)個文件緩沖區(qū)10.1.4 文件緩沖區(qū)文件緩沖區(qū)P277從內(nèi)存向磁盤輸出數(shù)據(jù)必須先送到內(nèi)存中從內(nèi)存向磁盤輸出數(shù)據(jù)必須先送到內(nèi)存中的緩沖區(qū),裝滿緩沖區(qū)后才一起送到磁盤的緩沖區(qū),裝滿緩沖區(qū)后才一起送到磁盤去去如果從磁盤向計算機讀入數(shù)據(jù),則一次從如果從磁盤向計算機讀入數(shù)據(jù),則一

12、次從磁盤文件將一批數(shù)據(jù)輸入到內(nèi)存緩沖區(qū)磁盤文件將一批數(shù)據(jù)輸入到內(nèi)存緩沖區(qū)充滿緩沖區(qū)),然后再從緩沖區(qū)逐個地將充滿緩沖區(qū)),然后再從緩沖區(qū)逐個地將數(shù)據(jù)送到程序數(shù)據(jù)區(qū)給程序變量)數(shù)據(jù)送到程序數(shù)據(jù)區(qū)給程序變量)10.1.4 文件緩沖區(qū)文件緩沖區(qū)P277程序數(shù)據(jù)區(qū)程序數(shù)據(jù)區(qū)輸出文件緩沖區(qū)輸出文件緩沖區(qū)輸入文件緩沖區(qū)輸入文件緩沖區(qū)磁盤磁盤從內(nèi)存向磁盤輸出數(shù)據(jù)從內(nèi)存向磁盤輸出數(shù)據(jù)裝滿緩沖區(qū)裝滿緩沖區(qū)10.1.4 文件緩沖區(qū)文件緩沖區(qū)P277程序數(shù)據(jù)區(qū)程序數(shù)據(jù)區(qū)輸出文件緩沖區(qū)輸出文件緩沖區(qū)輸入文件緩沖區(qū)輸入文件緩沖區(qū)磁盤磁盤從磁盤向計算機讀入數(shù)據(jù)從磁盤向計算機讀入數(shù)據(jù)充滿緩沖區(qū)充滿緩沖區(qū)10.1.5 文件指

13、針文件指針P277緩沖文件系統(tǒng)中,關(guān)鍵的概念是緩沖文件系統(tǒng)中,關(guān)鍵的概念是“文件類文件類型指針型指針”,簡稱,簡稱“文件指針文件指針”每個被使用的文件都在內(nèi)存中開辟一個相每個被使用的文件都在內(nèi)存中開辟一個相應的文件信息區(qū),用來存放文件的有關(guān)信應的文件信息區(qū),用來存放文件的有關(guān)信息如文件的名字、文件狀態(tài)及文件當前息如文件的名字、文件狀態(tài)及文件當前位置等)位置等)這些信息是保存在一個結(jié)構(gòu)體變量中的。這些信息是保存在一個結(jié)構(gòu)體變量中的。該結(jié)構(gòu)體類型是由系統(tǒng)聲明的,取名為該結(jié)構(gòu)體類型是由系統(tǒng)聲明的,取名為FILE10.1.5 文件指針文件指針P277聲明聲明FILE結(jié)構(gòu)體類型的信息包含在頭文件結(jié)構(gòu)體類

14、型的信息包含在頭文件“stdio.h中中一般設(shè)置一個指向一般設(shè)置一個指向FILE類型變量的指針變類型變量的指針變量,然后通過它來引用這些量,然后通過它來引用這些FILE類型變量類型變量10.1.5 文件指針文件指針P277FILE*fp1,*fp2,*fp3;文件文件f1的的文件信息區(qū)文件信息區(qū)fp1文件文件f2的的文件信息區(qū)文件信息區(qū)fp2文件文件f3的的文件信息區(qū)文件信息區(qū)fp310.2 文件的打開與關(guān)閉文件的打開與關(guān)閉10.2.1 用fopen函數(shù)打開數(shù)據(jù)文件10.2.2 用fclose函數(shù)關(guān)閉文件P27810.2.1 用用fopen函數(shù)打開數(shù)據(jù)文件函數(shù)打開數(shù)據(jù)文件P278對文件讀寫之前

15、應該對文件讀寫之前應該“翻開該文件,在翻開該文件,在使用結(jié)束之后應使用結(jié)束之后應“封鎖該文件。封鎖該文件。所謂所謂“翻開是指為文件建立相應的信息翻開是指為文件建立相應的信息區(qū)區(qū)(用來存放有關(guān)文件的信息用來存放有關(guān)文件的信息)和文件緩沖和文件緩沖區(qū)區(qū)(用來暫時存放輸入輸出的數(shù)據(jù)用來暫時存放輸入輸出的數(shù)據(jù))。10.2.1 用用fopen函數(shù)打開數(shù)據(jù)文件函數(shù)打開數(shù)據(jù)文件P278在編寫程序時,在打開文件的同時,一般在編寫程序時,在打開文件的同時,一般都指定一個指針變量指向該文件,也就是都指定一個指針變量指向該文件,也就是建立起指針變量與文件之間的聯(lián)系,這樣建立起指針變量與文件之間的聯(lián)系,這樣就可以通過

16、該指針變量對文件進行讀寫就可以通過該指針變量對文件進行讀寫所謂所謂“封鎖是指撤銷文件信息區(qū)和文件封鎖是指撤銷文件信息區(qū)和文件緩沖區(qū)緩沖區(qū) 10.2.1 用用fopen函數(shù)打開數(shù)據(jù)文件函數(shù)打開數(shù)據(jù)文件P278fopen函數(shù)的調(diào)用方式為:函數(shù)的調(diào)用方式為:fopen(文件名文件名,使用文件方式使用文件方式);例如:例如: fopen(“a1”,”r”); 表示要打開名為表示要打開名為“a1的文件,使用文件的文件,使用文件方式為方式為“讀入讀入”fopen函數(shù)的返回值是指向函數(shù)的返回值是指向a1文件的指文件的指針針10.2.1 用用fopen函數(shù)打開數(shù)據(jù)文件函數(shù)打開數(shù)據(jù)文件P278通常將通常將fop

17、en函數(shù)的返回值賦給一個指向函數(shù)的返回值賦給一個指向文件的指針變量。如:文件的指針變量。如:FILE *fp; fp=fopen(“a1”,”r”);fp和文件和文件a1相聯(lián)系,相聯(lián)系,fp指向了指向了a1文件文件10.2.1 用用fopen函數(shù)打開數(shù)據(jù)文件函數(shù)打開數(shù)據(jù)文件P278在打開一個文件時,通知編譯系統(tǒng)以下在打開一個文件時,通知編譯系統(tǒng)以下3個信息:個信息:需要訪問的文件的名字需要訪問的文件的名字使用文件的方式(使用文件的方式(“讀還是讀還是“寫等寫等)讓哪一個指針變量指向被打開的文件讓哪一個指針變量指向被打開的文件使用文件方式參見教材表使用文件方式參見教材表10.1。10.2.1 用

18、用fopen函數(shù)打開數(shù)據(jù)文件函數(shù)打開數(shù)據(jù)文件P278闡明:闡明:(1) 最基本的是最基本的是“r”,“w”,“a三種三種方式。在其后加方式。在其后加“b表示是二進制文件表示是二進制文件,“+”表示既可讀又可寫。表示既可讀又可寫。10.2.1 用用fopen函數(shù)打開數(shù)據(jù)文件函數(shù)打開數(shù)據(jù)文件P278闡明:闡明: (2) 如果不能實現(xiàn)如果不能實現(xiàn)“翻開的任務(wù),翻開的任務(wù),fopen函數(shù)將會帶回一個出錯信息。出錯函數(shù)將會帶回一個出錯信息。出錯的原因可能是用的原因可能是用“r方式打開一個并不方式打開一個并不存在的文件;磁盤出故障;磁盤已滿無法存在的文件;磁盤出故障;磁盤已滿無法建立新文件等。此時建立新文

19、件等。此時fopen函數(shù)將帶回一函數(shù)將帶回一個空指針值個空指針值NULL。10.2.1 用用fopen函數(shù)打開數(shù)據(jù)文件函數(shù)打開數(shù)據(jù)文件P278常用下面的方法打開一個文件:常用下面的方法打開一個文件: if (fp=fopen(“file1”,r)=NULL)printf(“cannot open this filen”); exit(0);終止正在執(zhí)行的程序終止正在執(zhí)行的程序10.2.2 用用fclose函數(shù)關(guān)閉文件函數(shù)關(guān)閉文件P280關(guān)閉文件用關(guān)閉文件用fclose函數(shù)。函數(shù)。fclose函數(shù)調(diào)函數(shù)調(diào)用的一般形式為用的一般形式為fclose(文件指針文件指針); 例如:例如: fclose

20、(fp); 如果不關(guān)閉文件將會丟失數(shù)據(jù)。如果不關(guān)閉文件將會丟失數(shù)據(jù)。10.3 文件的順序讀寫文件的順序讀寫P280在順序?qū)憰r,先寫入的數(shù)據(jù)存放在文件中在順序?qū)憰r,先寫入的數(shù)據(jù)存放在文件中前面,后寫入的數(shù)據(jù)存放在文件中后面前面,后寫入的數(shù)據(jù)存放在文件中后面在順序讀時,先讀文件中前面的數(shù)據(jù),后在順序讀時,先讀文件中前面的數(shù)據(jù),后讀文件中后面的數(shù)據(jù)讀文件中后面的數(shù)據(jù)對順序讀寫來說,對文件讀寫數(shù)據(jù)的順序?qū)樞蜃x寫來說,對文件讀寫數(shù)據(jù)的順序和數(shù)據(jù)在文件中的物理順序是一致的和數(shù)據(jù)在文件中的物理順序是一致的 順序讀寫需要用庫函數(shù)實現(xiàn)順序讀寫需要用庫函數(shù)實現(xiàn)10.3.1 向文件讀寫一個字符向文件讀寫一個字符1

21、0.3.2 向文件讀寫一個字符串向文件讀寫一個字符串10.3.3 文件的格式化讀寫文件的格式化讀寫10.3.4 用二進制方式讀寫文件用二進制方式讀寫文件10.3 文件的順序讀寫文件的順序讀寫P28010.3.1 向文件讀寫一個字符向文件讀寫一個字符P280函數(shù)名函數(shù)名調(diào)用形式調(diào)用形式功能功能返回值返回值fgetcfgetc(fp)從從fp指向的指向的文件讀入一文件讀入一個字符個字符讀成功,帶回所讀讀成功,帶回所讀的字符,失敗則返的字符,失敗則返回文件結(jié)束標志回文件結(jié)束標志(即即-1)fputcfputc(ch,fp)把字符把字符ch寫寫到文件指針到文件指針變量變量fp所指所指向的文件中向的文件

22、中寫成功,返回值就寫成功,返回值就是輸出的字符;輸是輸出的字符;輸出失敗,則返回出失敗,則返回(即(即-1)讀寫一個字符的函數(shù)讀寫一個字符的函數(shù)10.3.2 向文件讀寫一個字符串向文件讀寫一個字符串P284讀寫一個字符串的函數(shù)讀寫一個字符串的函數(shù)函數(shù)名函數(shù)名調(diào)用形式調(diào)用形式功能功能返回值返回值fgetsfgets(str,n,fp)從從fp指向的文件讀指向的文件讀入長度為入長度為(n-1)的字的字符串,存放到字符符串,存放到字符數(shù)組數(shù)組str中中讀成功,返讀成功,返回地址回地址str,失敗則返回失敗則返回NULL)fputsfputs(str,fp)str所指向的字符串所指向的字符串寫到文件指

23、針變量寫到文件指針變量fp所指向的文件中所指向的文件中寫成功,返寫成功,返回回 0 ; 否 則; 否 則返回非返回非0值值闡明:闡明:(1用用fgets函數(shù)可以從指定的文件讀入函數(shù)可以從指定的文件讀入一個字符串。如:一個字符串。如: fgets(str,n,fp); 闡明:闡明:fgets(str,n,fp);中中n是要求得到的字符個是要求得到的字符個數(shù),但實際上只讀數(shù),但實際上只讀n-1個字符,然后在最后個字符,然后在最后加一個加一個0字符,這樣得到的字符串共字符,這樣得到的字符串共有有n個字符,把它們放到字符數(shù)組個字符,把它們放到字符數(shù)組str中中如果在讀完如果在讀完n-1個字符之前遇到換

24、行符個字符之前遇到換行符“n或文件結(jié)束符或文件結(jié)束符EOF,讀入即結(jié)束,但將所,讀入即結(jié)束,但將所遇到的換行符遇到的換行符“n也作為一個字符讀入也作為一個字符讀入執(zhí)行執(zhí)行fgets成功,返回成功,返回str數(shù)組首地址,如數(shù)組首地址,如果一開始就遇到文件尾或讀數(shù)據(jù)錯,返回果一開始就遇到文件尾或讀數(shù)據(jù)錯,返回NULL闡明:闡明:(2用用fputs函數(shù)可以向指定的文件輸出函數(shù)可以向指定的文件輸出一個字符串。如:一個字符串。如: fputs(Chian,fp);fputs函數(shù)中第一個參數(shù)可以是字符串常量函數(shù)中第一個參數(shù)可以是字符串常量、字符數(shù)組名或字符型指針、字符數(shù)組名或字符型指針字符串末尾的字符串末

25、尾的0不輸出不輸出輸出成功,函數(shù)值為;失敗,函數(shù)值為輸出成功,函數(shù)值為;失敗,函數(shù)值為EOF10.3.3 文件的格式化讀寫文件的格式化讀寫P287一般調(diào)用方式為:一般調(diào)用方式為:fprintf(文件指針文件指針,格式字符串格式字符串,輸出表列輸出表列);fscanf (文件指針文件指針,格式字符串格式字符串,輸入表列輸入表列);如:如:fprintf (fp,”%d,%6.2f”,i,f);fscanf (fp,”%d,%f”,&i,&f);10.3.4 用二進制方式讀寫文件用二進制方式讀寫文件P288一般調(diào)用形式為一般調(diào)用形式為:fread(buffer,size,count

26、,fp);fwrite(buffer,size,count,fp); 10.3.4 用二進制方式讀寫文件用二進制方式讀寫文件P288buffer:是一個地址:是一個地址對對fread來說,它是用來存放從文件讀入的數(shù)來說,它是用來存放從文件讀入的數(shù)據(jù)的存儲區(qū)的地址據(jù)的存儲區(qū)的地址對對fwrite來說,是要把此地址開始的存儲區(qū)中來說,是要把此地址開始的存儲區(qū)中的數(shù)據(jù)向文件輸出的數(shù)據(jù)向文件輸出size:要讀寫的字節(jié)數(shù):要讀寫的字節(jié)數(shù)count:要讀寫多少個數(shù)據(jù)項:要讀寫多少個數(shù)據(jù)項fp:FILE類型指針類型指針10.4 文件的隨機讀寫文件的隨機讀寫P291對文件進行順序讀寫比較容易理解,也容對文件進

27、行順序讀寫比較容易理解,也容易操作,但有時效率不高易操作,但有時效率不高隨機訪問不是按數(shù)據(jù)在文件中的物理位置隨機訪問不是按數(shù)據(jù)在文件中的物理位置次序進行讀寫,而是可以對任何位置上的次序進行讀寫,而是可以對任何位置上的數(shù)據(jù)進行訪問,顯然這種方法比順序訪問數(shù)據(jù)進行訪問,顯然這種方法比順序訪問效率高得多效率高得多10.4 文件的隨機讀寫文件的隨機讀寫10.4.1 文件位置指針及其定位10.4.2 隨機讀寫文件P29110.4.1 文件位置指針及其定位文件位置指針及其定位P2921.文件的位置指針文件的位置指針為了對讀寫進行控制,系統(tǒng)為每個文件設(shè)為了對讀寫進行控制,系統(tǒng)為每個文件設(shè)置了一個位置指針,用

28、來指示當前的讀置了一個位置指針,用來指示當前的讀寫位置。寫位置。10.4.1 文件位置指針及其定位文件位置指針及其定位P2921.文件的位置指針文件的位置指針文件指針文件指針讀寫當前位置讀寫當前位置文件尾文件尾文件頭文件頭10.4.1 文件位置指針及其定位文件位置指針及其定位P2921.文件的位置指針文件的位置指針一般情況下,在對字符文件進行順序讀寫一般情況下,在對字符文件進行順序讀寫時,文件標記指向文件開頭,進行讀的時,文件標記指向文件開頭,進行讀的操作時,就讀第一個字符,然后文件標操作時,就讀第一個字符,然后文件標記向后移一個位置,在下一次讀操作時記向后移一個位置,在下一次讀操作時,就將位

29、置標記指向的第二個字符讀入,就將位置標記指向的第二個字符讀入。依此類推,直到遇文件尾,終了。依此類推,直到遇文件尾,終了10.4.1 文件位置指針及其定位文件位置指針及其定位P2921.文件的位置指針文件的位置指針如果是順序?qū)懳募?,則每寫完一個數(shù)據(jù)后如果是順序?qū)懳募?,則每寫完一個數(shù)據(jù)后,文件標記順序向后移一個位置,然后,文件標記順序向后移一個位置,然后在下一次執(zhí)行寫操作時把數(shù)據(jù)寫入指針在下一次執(zhí)行寫操作時把數(shù)據(jù)寫入指針所指的位置。直到把全部數(shù)據(jù)寫完,此所指的位置。直到把全部數(shù)據(jù)寫完,此時文件位置標記在最后一個數(shù)據(jù)之后時文件位置標記在最后一個數(shù)據(jù)之后10.4.1 文件位置指針及其定位文件位置指針及其定位P2921.文件的位置指針文件的位置指針可以根據(jù)讀寫的需要,人為地移動了文件可以根據(jù)讀寫的需要,人為地移動了文件標記的位置。文件標記可以向前移、向標記的位置。文件標記可以向前移、向后移,移到文件頭或文件尾,然后對該后移,移到

溫馨提示

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

評論

0/150

提交評論