词条 | 有类型文件 |
释义 | 有类型文件中的元素可以是混合型的,并以二进制格式存贮,因此有类型文件(除了字符类型文件,因为它实质上是文本文件)不象文本文件那样可以用编辑软件等进行阅读和处理。 一、有类型文件的定义有类型文件的类型说明的格式为: 类型标识符=File of 基类型; 其中基类型可以是除了文件类型外的任何类型。例如: file1=file of integer; file2=file of array[1..10] of string; file3=file of set of char; file4=file of real; file5=file of record; name:string; course:array[1..10] of real; sum:real; end; 等等,其中file2,file3,file5中的数组、集合、记录等类型可以先说明再来定义文件变量。 例如: var f1:file1; f2,f3:file3; f4:file5; 与前面所有类型说明和变量定义一样,文件类型说明和变量定义也可以合并在一起,例如: var f1:file of integer; f2,f3:file of set of char; file4=file of record; name:string; course:array[1..10] of real; sum:real; end; Free Pascal对有类型文件的访问既可以顺序方式也可以用随机方式。 二、有类型文件的建立有类型文件的建立只能通过程序的方式进行,其操作步骤与文本文件程序方式建立的步骤相仿,不同之处:(1)有类型文件的定义与文本文件的定义不同;(2)有类型文件可以利用seek命令指定指针随机写入。 三、有类型文件的访问有类型文件访问的操作步骤与文本文件的程序访问操作步骤相仿,区别之处:(1)有类型文件的定义与文本文件的定义不同;(2)有类型文件可以利用seek命令访问文件记录中的任一记录与记录中的任一元素。 对有类型文件的写操作步骤为: assign(f,str); rewrite(f); write(f,var表); close(f); 对有类型文件的读操作步骤为: assign(f,str); reset(f); read(f,var表); close(f); 四、例题分析例11.5 设有一个整数文件f,现要求将其中的偶数乘以2,奇数减1,形成一个偶数文件。 分析:有两种方法,一是另外生成一个偶数文件g,一是将生成的偶数文件仍然保存在原文件f中,下面分别给出这两种方法的程序。 program exp11_5_1(input,output); { 生成一个偶数文件g } var f,g : file of integer; x:integer; begin assign(f,’input.txt’); assign(g,’output.txt’); reset(f); rewrite(g); while not eof(f) do begin read(f,x); if odd(x) then x:=x-1 else x:=x+x; write(g,x); end; close(f) ;close(g); end. program exp11_5_2(input,output); { 将生成的偶数文件仍然保存在原文件f中 } var f : file of integer; x,i:integer; begin assign(f,’input.txt’); reset(f); i:=1; { 人为设定一个写指针 } while not eof(f) do begin read(f,x); { 系统指针作为读指针 } if odd(x) then x:=x-1 else x:=x+x; seek(f,i); { 将写指针定位到目标位置 } write(f,x); i:=i+1; end; close(f); end. 例11.6 设有两个已经排好序(从小到大)的整数文件t1和t2,请编程将t1和t2合并成一个文件t,使得合并后的文件也是有序的(从小到大)。 program exp11_6(input,output); type intfile = file of integer; var t1,t2,t:intfile; procedure paixu(var f,g,h:intfile); var m,x,y:integer; begin reset(f) ;reset(g) ;rewrite(h) ; m:=0; { m为初始标志 } while (not eof(f) and not eof(g)) do begin if m=0 then begin read(f,x) ;read(g,y) ;m:=1; end; if x<y then begin write(h,x);read(f,x); end else begin write(h,y);read(g,y); end; end; while not eof(f) do begin read(f,x);write(h,x); end; while not eof(g) do begin read(g,y);write(h,y); end; close(f);close(g);close(h); end; begin { main } assign(t1,’input1.txt’); assign(t2,’input2.txt’); assign(t, ’output.txt’); paixu(t1,t2,t); end. 注意:类型文件用写字本或TYPE命令打开看,全是乱码(二进制代码)。 Turbo Pascal将文件分为三类:文本文件(顺序)、有类型文件(顺序或随机)和无类型文件(顺序或随机)。下面将介绍这些文件及其操作。 |
随便看 |
|
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。