信息學奧賽--文件操作_第1頁
信息學奧賽--文件操作_第2頁
信息學奧賽--文件操作_第3頁
信息學奧賽--文件操作_第4頁
信息學奧賽--文件操作_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、文件操作文件操作 不存儲程序的計算機還不如一個強有力的不存儲程序的計算機還不如一個強有力的計算器,最早購買不帶磁盤驅動器的用戶計算器,最早購買不帶磁盤驅動器的用戶很快就明白了這一點很快就明白了這一點當他們關掉計算當他們關掉計算機的電源時,其工作成果也很就隨之消失機的電源時,其工作成果也很就隨之消失了。因而,當你的計算機具備了一個軟盤了。因而,當你的計算機具備了一個軟盤驅動器或者還有一個硬盤時,學習使用磁驅動器或者還有一個硬盤時,學習使用磁盤文件對編寫有用的程序來說就是很重要盤文件對編寫有用的程序來說就是很重要的了。下面就來介紹的了。下面就來介紹Pascal文件的有關知文件的有關知識。識。 文件

2、的概念文件的概念 文件是指由一系列相同類型數據組成的一個數據文件是指由一系列相同類型數據組成的一個數據序列,是一種由用戶定義的構造型的數據類型。序列,是一種由用戶定義的構造型的數據類型。作為系統(tǒng)提供的一種手段,是計算機與各類設備作為系統(tǒng)提供的一種手段,是計算機與各類設備進行通訊的媒介,從而用以實現信息在程序內外進行通訊的媒介,從而用以實現信息在程序內外的交換。對于文件我們實際上早已在使用,前面的交換。對于文件我們實際上早已在使用,前面出現的出現的Pascal程序中的輸入、輸出就是應用文件程序中的輸入、輸出就是應用文件的方法來實現的,這些文件的名字是的方法來實現的,這些文件的名字是Pascal的

3、標的標準文件準文件“INPUT”和和“OUTPUT”,它們分別對應,它們分別對應于標準輸入設備和標準輸出設備,在于標準輸入設備和標準輸出設備,在Free Pascal中可省略不寫。中可省略不寫。文件的分類文件的分類 在在Pascal的數據文件中,按文件結構形式劃的數據文件中,按文件結構形式劃分,以分,以ASCII代碼形式(字符形式)存放的稱代碼形式(字符形式)存放的稱為為TEXT類型文件,也稱為文本文件,這是我類型文件,也稱為文本文件,這是我們經常要用到的文件類型。還有一種以二進們經常要用到的文件類型。還有一種以二進制代碼形式存放的文件,稱為制代碼形式存放的文件,稱為File類型文件,類型文件

4、,它又稱為類型文件。我們平時用到的是第一它又稱為類型文件。我們平時用到的是第一種文件類型:文本文件。種文件類型:文本文件。文本文件特征 (1)當程序開始把數據寫(輸出)到文件中去時,)當程序開始把數據寫(輸出)到文件中去時,總是從文件的起始位置開始。也就是不能從文件的中總是從文件的起始位置開始。也就是不能從文件的中間位置開始存放數據。間位置開始存放數據。 (2)輸出的數據是一個接一個地存放在文件中的。)輸出的數據是一個接一個地存放在文件中的。 (3)當程序從文件中讀(輸入)數據到內存中時,)當程序從文件中讀(輸入)數據到內存中時,總是從文件的起始位置開始。也就是不可能從文件的總是從文件的起始位

5、置開始。也就是不可能從文件的中間的某個位置開始讀入數據。中間的某個位置開始讀入數據。 (4)讀數據時,必須按存入文件時的順序一個接一)讀數據時,必須按存入文件時的順序一個接一個的讀入內存中去。個的讀入內存中去。 (5)對同一個文件的讀寫操作不能交叉進行。)對同一個文件的讀寫操作不能交叉進行。 文本文件的定義 文本文件不是簡單地由某類型的元素序列文本文件不是簡單地由某類型的元素序列所組成,它的基本元素是字符,由它們構所組成,它的基本元素是字符,由它們構成行,若干行組成一份原文。由于各行的成行,若干行組成一份原文。由于各行的長度可以不同,所以文本文件只能順序地長度可以不同,所以文本文件只能順序地處

6、理。處理。 文本文件的定義如下:文本文件的定義如下: var fp1,fp2:text;文件類型的常用命令 (1) assign 語法:語法:assign(filevar,filename); Filename是合法的文件名的字符串表達式,這個名字是合法的文件名的字符串表達式,這個名字賦給文件變量賦給文件變量filevar,在程序中對文件變量的操作即,在程序中對文件變量的操作即為對磁盤文件為對磁盤文件Filename的操作。的操作。 如:如:assign(fp1,abc.in); assign(fp2,abc.out); 這時這時fp1,fp2是文件類型變量,是文件類型變量,abc.in、ab

7、c.out是實際是實際文件名字,這樣文件變量文件名字,這樣文件變量fp1與與abc.in、fp2與與abc.out、就建立起聯系了,在程序中就建立起聯系了,在程序中fp1就可以代表就可以代表abc.in文件、文件、fp2就可以代表就可以代表abc.out文件使用了。文件使用了。 (2)rewrite 語法:語法:rewrite(filevar) 功能:創(chuàng)建一個新的磁盤文件,并以寫的方式打功能:創(chuàng)建一個新的磁盤文件,并以寫的方式打開該文件,初始化文件為空,文件指針指向開始開該文件,初始化文件為空,文件指針指向開始位置。在使用此命令前需先用位置。在使用此命令前需先用assign過程,給文過程,給文

8、件變量一個實在的文件名。件變量一個實在的文件名。 如:如:rewrite(fp2); 這時將在磁盤上工作目錄下新這時將在磁盤上工作目錄下新建一個空文件建一個空文件abc.out,并打開該開件。若以前,并打開該開件。若以前工作目錄下存在工作目錄下存在abc.out,則會將原來的文件清,則會將原來的文件清空,并將文件指針指向開始位置???,并將文件指針指向開始位置。 (3)reset 語法:語法:reset(filevar); 功能:打開一個已存在的文件,并將文件指針指功能:打開一個已存在的文件,并將文件指針指向開始位置,表示可開始讀入文件,但不能向文向開始位置,表示可開始讀入文件,但不能向文件寫數

9、據,同樣件寫數據,同樣filevar文件名必須存在。文件名必須存在。 如:如:reset(fp1); 打開打開fp1所代表的文件所代表的文件abc.in,并將文件指針指向開始位置。如果工作目錄下不并將文件指針指向開始位置。如果工作目錄下不存在存在abc.in,將會出現錯誤信息,將會出現錯誤信息2。 (4)close 語法:語法:close(filevar) 功能:關閉一個文件,無論是向磁盤寫文件,還功能:關閉一個文件,無論是向磁盤寫文件,還是從磁盤上讀取文件的內容,當讀、寫完畢時都是從磁盤上讀取文件的內容,當讀、寫完畢時都必須用必須用close命令關閉已打開的文件,以保證文件命令關閉已打開的文

10、件,以保證文件的完整性和可靠性,否則將引起文件處理錯誤。的完整性和可靠性,否則將引起文件處理錯誤。 如:如:close(fp2); 這時將關閉文件這時將關閉文件fp2,對于被讀,對于被讀的文件,可以關閉也可以不關閉,但對于被寫的的文件,可以關閉也可以不關閉,但對于被寫的文件,程序結束時,必須關閉,否則,所有寫入文件,程序結束時,必須關閉,否則,所有寫入的信息將不會被寫入文件。的信息將不會被寫入文件。 (5)read或或readln 語法:語法:read(filevar,var1,var2,varm) 功能:從文件功能:從文件filevar中讀出若干個數中讀出若干個數,賦給賦給變量變量var1,

11、,varm,這里使用規(guī)則和,這里使用規(guī)則和read原來的使用方法相同,只不過在原來原來的使用方法相同,只不過在原來變量前加一個文件類型變量變量前加一個文件類型變量filevar而已。而已。 如:如:read(fp1,a,b);這時將從這時將從abc.in文件讀文件讀出兩個量分別賦值給出兩個量分別賦值給a和和b兩個變量。兩個變量。 (6)write或或writeln 語法:語法:write(filevar, var1,var2,varm); 功能:向文件功能:向文件filevar中寫入若干個數。這中寫入若干個數。這里使用規(guī)則和里使用規(guī)則和write原來的使用方法相同,原來的使用方法相同,只不過在

12、原來變量前加一個文件類型變量只不過在原來變量前加一個文件類型變量filevar而已。而已。 如:如:write(fp2,a,b);這時將向這時將向abc.out文件文件寫入寫入a和和b兩個變量的值。兩個變量的值。 (7)eoln函數函數 語法:語法:eoln(filevar); 功能:行結束函數,其中文件功能:行結束函數,其中文件filevar一定一定為為text類型,函數值為布爾型。當文件指類型,函數值為布爾型。當文件指針向回車換行符時,函數值為針向回車換行符時,函數值為true(真),(真),否則為否則為false(假假)。 (8)eof函數(相當于函數(相當于seekeof()) 語法:

13、語法:eof(filevar) 功能:文件結束函數,其中文件功能:文件結束函數,其中文件filevar是是文件類型變量,函數值是布爾值。當文件文件類型變量,函數值是布爾值。當文件指針指向文件結束標志時,函數值為指針指向文件結束標志時,函數值為true (真真),否則為,否則為false(假假)。它通常寫作。它通常寫作seekeof。該函數一般用以判斷文件是否。該函數一般用以判斷文件是否結束。結束。文件類型輸入輸出一般用法 在我們使用文件類型輸入輸出時,通常用標準輸入文件在我們使用文件類型輸入輸出時,通常用標準輸入文件input和標準的輸出和標準的輸出文件文件output來表示文件類型變量,這樣

14、在程序中的輸入輸出操作就和不用來表示文件類型變量,這樣在程序中的輸入輸出操作就和不用文件類型輸入輸出格式一樣了。具體形式如下:文件類型輸入輸出格式一樣了。具體形式如下:文件輸入輸出一般格式文件輸入輸出一般格式:程序體的開始處加上程序體的開始處加上:assign(input,輸入文件名輸入文件名); 將輸入文件和標準輸入文件將輸入文件和標準輸入文件input建立起聯系建立起聯系reset(input); 打開輸入文件打開輸入文件 assign(output,輸出文件名輸出文件名); 將輸出文件和標準輸出文件將輸出文件和標準輸出文件output建立起聯系建立起聯系rewrite(output);

15、建立輸出文件建立輸出文件 程序體的結尾處加上程序體的結尾處加上:close(input); 關閉輸入文件關閉輸入文件close(output); 關閉輸出文件關閉輸出文件注意注意:在運行程序前在運行程序前,一定要在一定要在FP的工作目錄中建立一個輸入文件。否則將的工作目錄中建立一個輸入文件。否則將出錯。出錯。 例:讀入兩個整數,輸出兩個數的和。用文件類型輸入輸出。例:讀入兩個整數,輸出兩個數的和。用文件類型輸入輸出。文件名為:文件名為:abc.pas測試數據:測試數據:輸入文件:輸入文件:abc.in152 908輸出文件:輸出文件:abc.out1060程序程序1: program abc;

16、 var fp1,fp2:text; a,b,c:longint; begin assign(fp1,abc.in); reset(fp1); assign(fp2,abc.out); rewrite(fp2); read(fp1,a,b); c:=a+b; write(fp2,c); close(fp1); close(fp2); end.程序程序2: program abc; var a,b,c:longint; begin assign(input,abc.in); reset(input); assign(output,abc.out); rewrite(output); read(a

17、,b); c:=a+b; write(c); close(input); close(output); end.我們運行一下,發(fā)現這兩個程序的功能是一樣的,因此,我們用我們運行一下,發(fā)現這兩個程序的功能是一樣的,因此,我們用文件類型輸入輸出時,一般用程序文件類型輸入輸出時,一般用程序2的形式。的形式。例:讀入長方形的長和寬,求它的周長和面積。用文件類例:讀入長方形的長和寬,求它的周長和面積。用文件類型輸入輸出。文件名為:型輸入輸出。文件名為:cfx.pas保留兩位小數,兩個數字隔一空格。保留兩位小數,兩個數字隔一空格。測試數據:測試數據:輸入文件輸入文件cfx.in:2.5 3.6輸出文件輸出文件cfx.out:12.20 9.00程序如下:程序如下:program changfx; var a,b,c,s:real; begin assign(input,cfx.in); reset(input); assign(output,cfx.out); rewrite(output); read(a,b); c:=2*(a+b); s:=a*b; writeln(c:0:2, ,s:0:2); close(input); close(output); end. 練習題1(程序名:(程序名:ga07.as)已知三角形的底)已知三角形的底a和高和高h的值,輸出

溫馨提示

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

評論

0/150

提交評論