資源描述:
《程序設(shè)計(jì)基礎(chǔ)(c語言)》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、程序設(shè)計(jì)基礎(chǔ)(C語言)東北大學(xué)高級語言程序設(shè)計(jì)課程組課程網(wǎng)站:www.neu.edu.cn/cxsj程序設(shè)計(jì)基礎(chǔ)(C語言)文件1.文件概念什么是文件?文件是存儲在外部介質(zhì)上(介質(zhì):磁盤和磁帶等外存儲器)的數(shù)據(jù)或信息的集合例如程序文件中保存著源程序數(shù)據(jù)文件中保存著數(shù)據(jù)聲音文件中保存著聲音數(shù)據(jù)磁盤上的每個(gè)文件都有唯一的名字,進(jìn)行標(biāo)識,依據(jù)文件名找到相應(yīng)的文件為什么要使用文件文件的改動不能引起程序的改動,即程序與數(shù)據(jù)分離不同的程序可以訪問同一數(shù)據(jù)文件中的數(shù)據(jù),即數(shù)據(jù)共享能夠長期保存程序運(yùn)行的中間數(shù)據(jù)或結(jié)果數(shù)據(jù)31.文件概念C語言實(shí)現(xiàn)文件操作通過操作系統(tǒng)完成對文件的輸入輸出操作通過由C語言的編譯系
2、統(tǒng)提供的一套用于文件操作的庫函數(shù),也稱為“標(biāo)準(zhǔn)輸入/輸出庫”文件的特點(diǎn)文件是一個(gè)有序的數(shù)據(jù)序列保存的所有數(shù)據(jù)有著嚴(yán)格的排列次序(類似于數(shù)組)要訪問文件中的數(shù)據(jù),必須按照它們的排列順序,依次進(jìn)行訪問41.文件概念文件的分類數(shù)據(jù)的組織形式ASCII碼文件ASCII碼文件是將要存儲的數(shù)據(jù)采用ASCII碼的形式進(jìn)行存儲數(shù)據(jù)按順序組成一個(gè)一個(gè)的字符序列每一個(gè)字符用一個(gè)ASCII碼來表示,占用1個(gè)字節(jié)ASCII碼形式的文件在文本編輯器下可以直接閱讀保存在內(nèi)存中的所有數(shù)據(jù)在存入文件的時(shí)候都要先轉(zhuǎn)換為等價(jià)的字符形式當(dāng)要從文件中讀取數(shù)據(jù)時(shí),在將字符串轉(zhuǎn)換為浮點(diǎn)數(shù)例如:123.45(浮點(diǎn)數(shù))將123.45轉(zhuǎn)換
3、為字符串“123.45”再存放51.文件概念文件的分類數(shù)據(jù)的組織形式二進(jìn)制文件將數(shù)據(jù)按其在內(nèi)存中的存儲方式(二進(jìn)制方式)原樣輸出到文件中存放的內(nèi)存中的數(shù)據(jù)存入磁盤的時(shí)候不需要進(jìn)行數(shù)據(jù)轉(zhuǎn)換磁盤上保存的數(shù)據(jù)采用C語言規(guī)定的與內(nèi)存數(shù)據(jù)一致的表示形式進(jìn)行存儲例如:123.45存放字二進(jìn)制文件中將會占用4個(gè)字節(jié)(浮點(diǎn)數(shù))61.文件概念文件的分類數(shù)據(jù)的組織形式區(qū)別ASCII碼文件較為直觀、可讀性好方便人們的閱讀和理解可以直接在Windows下的記事本等工具直接觀察占用存儲空間較多而且在數(shù)據(jù)輸入輸出時(shí)必須進(jìn)行二進(jìn)制代碼和ASCII碼之間的轉(zhuǎn)換二進(jìn)制文件存儲空間的利用效率高輸入輸出時(shí)不需要進(jìn)行轉(zhuǎn)換,因而速
4、度較快,可以節(jié)省磁盤空間和轉(zhuǎn)換時(shí)間二進(jìn)制文件不能直接識別內(nèi)存中的表示形式,不方便人們的閱讀和理解,可讀性差71.文件概念文件的分類文件的處理方式數(shù)據(jù)寫入文件或從文件中讀出數(shù)據(jù)的過程計(jì)算機(jī)內(nèi)存程序數(shù)據(jù)區(qū)出入文件緩沖區(qū)輸出文件緩沖區(qū)外存文件寫文件輸出輸入讀文件81.文件概念文件的分類文件的處理方式“寫文件”將保存在內(nèi)存中的數(shù)據(jù)寫入磁盤首先要建立一個(gè)“輸出文件緩沖區(qū)”通過該緩沖區(qū)可將內(nèi)存中的數(shù)據(jù)存入磁盤,以文件的形式保存“讀文件”將保存在文件中的數(shù)據(jù)裝入內(nèi)存首先要建立一個(gè)“輸入文件緩沖區(qū)”,將文件中的數(shù)據(jù)裝入緩沖區(qū)然后再由緩沖區(qū)存入程序可以操作的內(nèi)存數(shù)據(jù)區(qū)91.文件概念文件的分類文件的處理方式C
5、語言系統(tǒng)對"緩沖區(qū)"的處理方式不同產(chǎn)生了兩種不同的文件處理方式緩沖文件系統(tǒng)對每個(gè)正在使用的文件,系統(tǒng)自動地在內(nèi)存中為其開辟一個(gè)緩沖區(qū)非緩沖文件系統(tǒng)指系統(tǒng)不會自動開辟緩沖區(qū),而要由程序自行設(shè)置文件的緩沖區(qū)提示在ANSIC83標(biāo)準(zhǔn)中取消了非緩沖文件系統(tǒng)對文本文件和二進(jìn)制文件均統(tǒng)一采用緩沖文件系統(tǒng)進(jìn)行處理101.文件概念文件的分類文件的處理方式緩沖文件的特點(diǎn)緩沖區(qū)是一個(gè)連接計(jì)算機(jī)內(nèi)存數(shù)據(jù)與外存文件的橋梁在內(nèi)存開辟一個(gè)“緩沖區(qū)”,為程序中的每一個(gè)文件使用執(zhí)行讀文件的操作時(shí),從磁盤文件將數(shù)據(jù)先讀如內(nèi)存“緩沖區(qū)”,裝滿后再從內(nèi)存“緩沖區(qū)”依此讀入進(jìn)接收的變量執(zhí)行寫文件的操作時(shí),先將數(shù)據(jù)寫入內(nèi)存“緩沖區(qū)
6、”,待內(nèi)存“緩沖區(qū)”寫滿后再寫入文件由此可見,內(nèi)存“緩沖區(qū)”的大小,影響著實(shí)際操作外存的次數(shù),內(nèi)存“緩沖區(qū)”越大,操作外存的次數(shù)越少,執(zhí)行速度就越快、效率就越高一般來說:文件的“緩沖區(qū)”的大小隨機(jī)器而定112.文件的操作C語言中文件的操作主要是由C語言庫函數(shù)實(shí)現(xiàn)了解和掌握C語言提供的與文件有關(guān)的操作和規(guī)定文件的定義文件的狀態(tài)訪問文件的基本操作文件操作的函數(shù)屬于C語言標(biāo)準(zhǔn)輸入輸出庫中的函數(shù)應(yīng)在程序函數(shù)的前面使用預(yù)處理命令"#include“#include122.文件的操作文件指針每個(gè)正在使用的文件都要說明一個(gè)FILE類型的結(jié)構(gòu)變量該類型就是文件讀寫所需要分配的內(nèi)存區(qū)域的類
7、型利用一個(gè)結(jié)構(gòu)體類型的變量存放該結(jié)構(gòu)變量用于存放文件的有關(guān)信息文件的名字、文件的性質(zhì)、文件的當(dāng)前狀態(tài)等FILE類型由系統(tǒng)定義它包含的成員即FILE的各個(gè)分量由操作系統(tǒng)自動定義在頭文件stdio.h中定義通過文件結(jié)構(gòu)的數(shù)據(jù)集合進(jìn)行輸入輸出處理文件結(jié)構(gòu)在打開文件時(shí)由操作系統(tǒng)自動建立132.文件的操作文件指針在頭文件stdio.h中定義的結(jié)構(gòu)FILEtypedefstruct{shortlevel;/*文件的緩沖區(qū)級別(滿或空