Pascal基本教程 第11章
http://www.mydrs.org 6/16/2001 大榕树
类型文件 按数据的二进制代码形式存放时的文件称为类型文件。如果再按照组成类型文件的元素数据结构分,又可以分为有类型文件和无类型文件。其定义为: type 类型名=file of 基类型;{有类型文件} 类型名=file; {无类型文件} 例如:var f:file of integer; 说明f为名的变量对应文件将用于存放整数。 var g:file; 说明g为名的变量对应文件的数据无任何规定。 Turbo Pascal有关类型文件的函数和过程 (1)assign过程 形式:assign(f,str); 功能:将文件名字符串str赋给文件变量f,程序对文件变量f的操作代替对文件str的操作。 (2)rewrite过程 形式:rewrite(f); 功能:建立并打开一个新的允许写磁盘文件,其文件名必须先由assign过程赋给变量f。这时,指向文件元素的指针指向第一个元素,rewrite过程所建立的文件为空文件。 (3)reset过程 形式:reset(f); 功能:打开一个已经存在的磁盘文件,其文件名必须先由assign过程赋给变量f,该文件只能读,指向文件元素的指针指向第一个元素。 (4)read过程 形式:read(f,var表); 功能:从磁盘文件f中,将数据依次读到var表表示的各个变量中。 (5)write过程 形式:write(f,var表); 功能:将var表所表示的各个变量的值依次写到磁盘文件f上。 (6)close过程 形式:close(f); 功能:关闭和f关联的磁盘文件,在写操作时自动产生一个文件结束标志。 (7)seek过程 形式:seek(f,n); 功能:把文件指针移到f指明文件的第n个元素。 (8)eof函数 形式:eof(f); 功能:若文件指向文件尾,则返回true,否则返回false。 对有类型文件的写操作步骤为: assign(f,str); rewrite(f); write(f,var表); close(f); 对有类型文件的读操作步骤为: assign(f,str); reset(f); read(f,var表); close(f); 例:在磁盘上建立一个1~50的平方数的数据文件zhoufei.dat。要求以一个数,这个数的平方数的格式写入。 program zhoufei; var f:file of integer; i:integer; begin assign(f,'zhoufei.dat'); rewrite(f); for i:=1 to 50 do write(f,i,sqr(i)); close(f) end. 文本文件 文本文件的内容有ASCII字符集中的字符组成,因此文本文件也称ASCII码文件,它可以用DOS中的type命令列出内容。文本文件具体是由一系列行组成,每一行可以包括0个或多个字符型成分,并以也行结束符结尾,文本文件类型TXT和类型文件file of char区别在于后者不包含行结束符。 文本文件和类型文件在读写上的差别在于前者只能按次序顺序读写,而后者可以不按照次序读写。适用文本文件的函数和过程除了用于类型文件操作的过程和函数外主要还有: (1)readln过程 形式:readln(f,var表);或readln(f); 功能:从磁盘文件f中,将数据依次读到var表表示的各变量中(其中readln(f)只读数据),并将文件指针移到行结束符后,就是下一行开头。 (2)writeln过程 形式:writeln(f,var表)或writeln(f); 功能:将var表所表示的各个变量的值依次写到磁盘文件f上去(writeln(f)不写值),然后再写一个行结束符。 (3)append过程 形式:append(f); 功能:打开一个已经存在的磁盘文件,其文件名必须和assign过程中的变量名f相对应,该文件只能写,此时文件指针指向文件尾。 (4)eoln函数 形式:eoln(f); 功能:若文件指针指向行结束符或文件结束符,则返回true,否则返回false。 对文本文件的写操作步骤: assign(f,str); rewrite(f); 或append(f); write(f,var表);或writeln(f); close(f); 对文本文件的读操作步骤: assign(f,str); reset(f); readln(f,var表);或readln(f); close(f); 例:随机产生30个随机整数存放于文本文件zhoufei.txt 中 program zhoufei; const n=30; var ra:text; i:integer; begin randomize; assign(ra,'zhoufei,txt'); rewrite(ra); for i:=1 to n do writeln(ra,random(100)); close(ra) end.
|