Fortran90-文件_第1页
Fortran90-文件_第2页
Fortran90-文件_第3页
Fortran90-文件_第4页
Fortran90-文件_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、引入文件的目的引入文件的目的: 便于输入、输出数据的保存与维护便于输入、输出数据的保存与维护程序结构的变化程序结构的变化:文件要先打开,再输入、输出:文件要先打开,再输入、输出主程序结构主程序结构:单位定义单位定义 说明说明 打开用于输入、输出的文件打开用于输入、输出的文件 从输入文件中从输入文件中读数据读数据 调用子程序处理调用子程序处理 将结果将结果写到输出文件中写到输出文件中 关闭用于输入、输出的文件关闭用于输入、输出的文件 END子程序:子程序:Fortran 90-文件文件1、记录记录:一行值或字符的序列称为一个记录,记录是输入、输出的基本单位。2、记录的三种格式记录的三种格式:有格

2、式记录有格式记录(ASCII,自由格式或自定义格式)无格式记录无格式记录(数据采用二进制补码表示)文件结束记录(不是文件的组成部分,是文件的结束标记)3、关于文件关于文件:是相关记录的有序集合。文件的特征文件的特征:(1)文件名 (2)格式:随记录分为有格式文件有格式文件、无格式文件无格式文件 (3)存取方式:顺序存取文件由记录指针控制由记录指针控制 存取操作必须从头到尾顺序进行 直接存取文件由记录号控制由记录号控制, 可以对任意一个指定的记录进行读写 (4)文件应先连接(预连接)即打开,再读写1 文件基本概念2 对文件的基本操作基本操作包括打开文件、关闭文件及读、写文件。常用四种文件类型:有

3、格式顺序存取文件、 无格式顺序存取文件、有格式直接存取文件、无格式直接存取文件。 OPEN 语句语句打开文件打开文件l作用作用:把文件与一个文件号连接起来且文件指针指向把文件与一个文件号连接起来且文件指针指向第一个记录第一个记录(直接文件无文件指针直接文件无文件指针)l一般形式一般形式如下: OPEN(连接信息表)l连接信息表连接信息表所包含的说明符如下:1、UNIT=ut 文件号ut ,必须是无符号整数(0-99),当文件号为第一个说明符时,UNIT=可省略。此项为必选项2、FILE=fe fe字符型数据,代表文件名。此项为必选项 例如:OPEN(3,FILE=DATA.DAT)3、STAT

4、US=ss。 ss用户给出的字符串,表示文件的状态。文件的五种可选状态值: NEW,OLD,REPLACE,SCRATCH(临时文件临时文件),UNKNOWN 默认为UNKNOWN4、ACCESS=as。字符串,其值可为Sequential(顺序的)或DIRECT(直接的)。缺省缺省为SEQUENTIAL5、FORM=fm。字符串,其值为Formated或Unformated,表明文件是有格式的还是无格式的。 对顺序文件的缺省值为有格式,对直接文件的缺省值为无格式。6、RECL=rl。正的整型表达式,用来指定文件中记录的长度。直接文件中每个记录长度必须相等,必须选择RECL项;顺序文件不需要使

5、用该项。7、ACTION=an。为一字符串,可取READ、WRITE、Readwrite(默认值)。为可选项8、BLANK=bk。为一字符串,可取为NULL(默认值)或ZERO。控制文件中的空格是忽略不计还是当零处理空格是忽略不计还是当零处理。为可选项9、IOSTAT=it。整型变量。OPEN语句执行时,获得数值。执行成功则为零,否则为一正整数。为可选项10、ERR=label。若打开文件出错,则转向标号语句。为可选项说明说明: OPEN语句中各说明符的次序可以任意,但应注意: 1.文件与文件号文件与文件号在某一程序单元中连接成功连接成功,就在该程序 的所有单元中都保持这种连接关系。直到程序结

6、束直到程序结束,除非除非使用使用CLOSE或新的或新的OPEN语句语句。 2.一个文件不能同时与两个文件号相连接。一个文件号也一个文件不能同时与两个文件号相连接。一个文件号也不能同时与两个文件连接不能同时与两个文件连接。 3.无格式文件不能使用格式编辑符例例:有格式顺序文件:有格式顺序文件OPEN语句形式语句形式OPEN(2,FILE=A.DAT)例例:有格式直接文件:有格式直接文件OPEN语句形式语句形式OPEN(2,FILE=A.DAT,ACCESS=DIRECT ,& FORM=FORMATTED,RECL=12) 其中RECL:规定记录的统一长度如如FORMAT=UNFORMATTED

7、为无格式文件为无格式文件例例:无格式顺序文件:无格式顺序文件OPEN语句形式语句形式OPEN(2,FILE=A.DAT, FORM=UNFORMATTED,& ACCESS=SEQUENTIAL)例例:无格式直接文件:无格式直接文件OPEN语句形式语句形式OPEN(2, FILE=A.DAT, ACCESS=DIRECT, RECL=12)CLOSE语句语句关闭文件关闭文件l作用:解除文件号与文件的连接关系。l写法:CLOSE(关闭信息表)*关闭信息表主要有下列说明符:UNIT=utIOSTAT=it 为可选项STATUS=ss 指定文件关闭后是否保留指定文件关闭后是否保留。为可选项 SS可为

8、KEEP或DELETE。*最简写法:CLOSE(2)从文件中读数据的语句从文件中读数据的语句l写法: READ(控制信息表)输入表l顺序存储文件的最简写法顺序存储文件的最简写法: READ(设备号,格式说明)输入表例: READ(2,*)A,B,C READ(2,FMT=(3F4.1)A,B,C注意点:(1)对顺序存储文件总是读文件指针指向的记录(文件指针指向的记录称为当前记录)。(2)读完后指针下移一个记录(3)如无输入表,仅指针下移一个记录l有格式直接存储文件的最简写法有格式直接存储文件的最简写法:指明记录号例: READ(2,*,REC=5)A,B,Cl无格式顺序文件、直接文件的无格式顺

9、序文件、直接文件的READ语句:与有语句:与有格式的区别是去掉格式说明项格式的区别是去掉格式说明项例例:READ(10)I,J READ(10,REC=3)I,JREAD的其它选项的其它选项IOSTAT=IT IT为整型变量值,执行此语句时为整型变量值,执行此语句时获得数值,获得数值,0 此操作发生错误此操作发生错误 =0 执行成功执行成功无此项,读写发生错误将报错,并停止运行无此项,读写发生错误将报错,并停止运行ADVANCE=YES(默认值)(默认值):遇下一个输入语句遇下一个输入语句换行读取换行读取 =NO:遇下一个输入语句不换行读取遇下一个输入语句不换行读取将数据写到输出文件中将数据写

10、到输出文件中l写法写法:WRITE(控制信息表)输出表l顺序存储文件的最简写法: WRITE(设备号,格式说明)输出表*注意点:(1)对顺序存储文件总是写在文件指针指向的 记录处。(2)写完后指针下移一个记录(3)总是改写(4)总是写最后一个记录(5)如果手工打开文件输入数据,最后一条记 录后要加一空行WRITE的其它选项的其它选项 IOSTAT=IT *IT为整型变量值,执行此语句时获得数值,为整型变量值,执行此语句时获得数值, 若若0 此操作发生错误此操作发生错误 =0 执行成功执行成功 *若无此项若无此项,读写发生错误将报错读写发生错误将报错,并停止运行并停止运行 ADVANCE=YES

11、(默认值)(默认值): 遇下一个输出遇下一个输出 语句换行输出。语句换行输出。 =NO :遇下一个输出遇下一个输出 语句不换行输出语句不换行输出例1、从键盘输入N个学生的姓名和考试成绩,把它写入到一个顺序文件中。Program creat_fileImplicit noneCharacter(len=10):nameReal:scoreInteger:n,IOpen(1,file=student.dat)Read *,nDo I=1,n Read(*,(a10,f6.1) name,score Write(1,(a10,f6.1) name,scoreEnddoClose(1)End例2、把例

12、1建立的文件中的数据显示到终端显示器上。Program read_fileImplicit noneCharacter(len=10):nameReal:scoreInteger:is=0Open(1,file=student.dat)Read(1,(a10,f6.1),iostat=is) name,scoreDo while(is=0) Write(*,(a10,f6.1) name,score Read(1,(a10,f6.1),iostat=is) name,scoreEnddoClose(1)End3 顺序文件的存取l有关顺序文件的文件指针操作语句有关顺序文件的文件指针操作语句:OP

13、EN:文件指针指向第一条记录READ:文件指针下移一个记录WRITE:文件指针下移一个记录REWIND语句:文件指针指向第一条记录BACKSPACES语句:文件指针上移一个记录REWIND语句(反绕语句)l不论当前文件的指针在何处,如果想把文件定位到文件初始点把文件定位到文件初始点,都可以通过反绕语句实现。l反绕语句有两种形式反绕语句有两种形式:REWIND 设备号REWIND (定位说明符表) UNIT= 设备号,必选项 IOSTAT=整型变量 ,可选项,用法同OPEN语句例如例如: REWIND 2 REWIND (2) REWIND (IOSTAT=I,UNIT=2)Backspace语

14、句(回退一个记录语句)Backspace 语句使指定文件号连接的文件在当前位置上回退一个记录。若当前文件定位到第N个记录,执行一次backspace 语句,则定位到第(N-1)个记录。该语句有两种形式:BACKSPACE 设备号BACKSPACE (定位说明符表)阅读程序阅读程序:OPEN(1,FILE=ABC.TXT)DO I=1,3 WRITE(1, (2I3) I,I*IENDDOBACKSPACE(1)READ(1, (2I3) K1,K2PRINT (2I3),K1,K2REWIND(1)DO WHILE(.TRUE.) READ(1, (2I3),IOSTAT=IS) K1,K2

15、IF(IS=0) THEN PRINT (2I3), K1,K2 ELSE EXIT ENDIFENDDOEND3 91 12 43 9例3 通过检查例2文件STUDENT.DAT中学生的数据后发现第K1个记录的学生姓名有错,第K2个记录的学生的成绩有误。编写程序修改原来的文件。 思路:由于不能对顺序文件同时读和写由于不能对顺序文件同时读和写,因此修改顺序文件时,必须从文件头开始依次读入每个记录,把正确的记录写到另一个临时文件中;读到有错的记录时,则把修改后的内容写到临时文件中。全部修改完后,把临时文件中的内容按次序传送回原文件。Program update_sequential_fileIm

16、plicit noneCharacter(len=10):name,new_name,cfmt=(a10,f6.1)Real:score,new_scoreInteger:is=0,n,I,k1,k2Open(1,file=student.dat,status=old)Open(2,status=scratch) !临时文件临时文件Read*,k1,new_nameRead*,k2,new_scoreN=0Read(1,cfmt,iostat=is) name,scoreDo while(is=0) n=n+1 If(n=k1) name=new_name If(n=k2) score=new

17、_score write(2,cfmt) name,score Read(1,cfmt,iostat=is) name,scoreenddoRewind(1);Rewind(2)Do I=1,n Read(2,cfmt) name,score write(1,cfmt) name,scoreEnddoClose(1);Close(2)EndEND FILE语句(结束语句)END FILE语句在指定文件当前位置处写上一个文件结束记录;一般应在被写文件关闭前写结束记录标记.执行该语句后,文件指针定位在文件结束记录之后,不能再读写原来连接的文件,除非执行BackSpace、Rewind语句或重新打开

18、.语句的两种形式: END FILE 文件号 END FILE (定位说明符表) 定位说明符表用法同REWIND语句.4 直接文件的存取 在读写语句中通过指明记录号,就可直接存取任任一一记录内的数据,而不必从文件的开头依次去读写。OPEN语句中需加入以下两项: ACCESS=“DIRECT” ,RECL=整型表达式 其中RECL:规定记录的统一长度。直接文件的每个记录必须相同,否则难以实施直接存取。INQUIRE语句该语句又称查询语句。按功能分为: 按文件号查询、按文件查询和按长度查询等。 例1:INQUIRE(1,EXIST=LMark,NAME=FileName) 例2:INQUIRE(FILE=STUD.DAT,OPENED=OpMark,& ACCESS=ACE,NUMBER=UnitNo) 例3:INQUIRE(IOLENGTH=L) a(1:n) 功能:查询输出表的总长度,一般用在建立无格式 直接存取文件之前,以便确定直接文件的记录长 度(即为RECL说明符所用)。6 无格式文件 无格式文件中的数据采用与内存中数据同样的存储方式,即采用二进制补码存放数据。如:654321:00000000000010011111101111110001 系统读写文件时不需要进行格式转换,加快了数据存取速度、也节省了大量的外存

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论