§8文件在前面的编程中,我们常需要从键盘输入数据,在屏幕显示运算结果。当需要输入的数据量较大时,调试时就必须一次次输入大量的数据,相当麻烦而且容易出错;当输出的数据很多时,屏幕上一闪而过,来不及看清,而且对输出数据无法加以利用。Pascal提供了这样的功能:先把输入数据存到某个文件中(如txt文档),程序从文件中读入数据;程序的运算结果也可以输出到某个文件中。Pascal中有三种类型的文件:有类型文件、文本文件、无类型文件,我们主要用到文本类型的文件。§8.1定义路径使用文件时,必须说明输入输出文件和程序源文件的相对位置,因此,输入输出文件最好跟程序的源文件处于同一个位置。例如要将源程序保存到D盘的“jz0401”目录中:先在D盘建文件夹“jz0401”;在Pascal环境中,File菜点下的“Changedir”设置路径,在弹出的对话框中输入D:\jz0401。§8.2文件的建立输入文件必须自己建立,建立的方法有两种。方法一:在指定位置新建文本文档,如上例中,到D盘jz0401目录中新建一文本文档,然后打开该文档,输入内容,最后将该文档改名。方法二:在Pascal中,用File菜单中的“new”新建一文件,输入内容后保存,注意保存时必须输入后缀名。输入文件的后缀名可以是txt,也可以是其它自定义的类型,如“in”、“dat”等,但无论其后缀名如何写,都是可以用记事本打开(直接双击该文件后在打开方式中选择记事本),也可以在Pascal环境中用File菜单下的open(F3)打开。输入文件的内容按程序中读入变量的顺序逐一输入,即以前在键盘输入时如何输入,在文件中也如何输入,该回车换行时也要回车换行。例如在程序中:readln(a,b);{a、b为实型变量}readln(c);{c为字符型变量}fori:=1to5doread(S[i]);{S数组为整型}则输入文件中的内容可以为:§8.3文件的使用使用文件读入数据或输出数据时,源程序必须按如下步骤使用文件:1.文件变量的说明:varf:text;2.文件变量与实际文件的连接:assign(f,’文件名.后缀名’);3.打开文件,做好读或写准备:只读——Reset(f);打开文件并作好处理准备,指针指向的第0号元素,f必须是一个已存在的文件。*reset打开的文件只能读写——Rewrite(f);3.547.1h6228918建立并打开一个新的文件(该文件名由assign赋给f),同时作好处理准备,把文件指针指向文件的开头,即第0号元素。以前已存在的同名文件将被覆盖。追加——Append(f);打开一个已存在的文件并把指针指向文件尾部,用于向文件尾部添加数据。4.从文件中读出数据,或将数据写入文件读——Read(f,V1,V2,V3……);/Readln(f,V1,V2,V3……);从文件中读出数据,依次赋给变量V1,V2,V3……Readln(f);文件指针移到下一行开头写——Write(f,V1,V2,V3……);/writeln(f,V1,V2,V3……);把变量V1,V2,V3……的值依次写到文件上Writeln(f);把一个行结束符写到文件中,并转入下一行5.Close(f);关闭文件,注意:凡是进行文件操作后(无论读或写),都必须关闭文件,否则可能丢失文件!【例1】从文件fe01.in中读出两个正整数n和m,打印1~n的sin值到文件fe01.out,每行m个数值。n<360,m<20programjszx8_1;varn,m,i,j:integer;f1,f2:text;{f1、f2为文件变量}beginassign(f1,‘fe01.in’);{将文件变量f1与实际文件fe01.in联系起来}reset(f1);{以只读方式打开文件f1}read(f1,n,m);{从文件f1中读出n和m}close(f1);{关闭文件f1}assign(f2,‘fe01.out’);rewrite(f2);{以写方式打开文件f2,若f2未存在,则生成并打开f2}j:=0;fori:=1tondobeginwrite(f2,sin(i));j:=j+1;ifjmodm=0thenwriteln(f2);end;close(f2);end.输出文件系统会自动生成,如果该路径下已有同名文件,则该同名文件会被覆盖。【例2】编写一个加密程序,先从键盘读入源文件名和目的文件名(两个字符串),然后从源文件读入若干段文字(只包含小写字母和空格),将其加密并输出到目的文件中。加密规则如下:将‘a’变为‘z’,‘b’变为‘y’,……,‘y’变为‘b’,‘z’变为‘a’;空格不变。programjszx8_2;vars1,s2:string;cc:char;f1,f2:text;beginreadln(s1);readln(s2);{读入...