Fortran程序设计:第八课 文件初步

上传人:努力****83 文档编号:239829280 上传时间:2024-02-22 格式:PPTX 页数:18 大小:205.59KB
收藏 版权申诉 举报 下载
Fortran程序设计:第八课 文件初步_第1页
第1页 / 共18页
Fortran程序设计:第八课 文件初步_第2页
第2页 / 共18页
Fortran程序设计:第八课 文件初步_第3页
第3页 / 共18页
资源描述:

《Fortran程序设计:第八课 文件初步》由会员分享,可在线阅读,更多相关《Fortran程序设计:第八课 文件初步(18页珍藏版)》请在装配图网上搜索。

1、Fortran程序设计第八课第八课 文件初步文件初步8.1 文件初步文件初步截止目前,我们接触到的程序都是小规模的截止目前,我们接触到的程序都是小规模的但是,在具体应用中,输入的数据和输出的数据量但是,在具体应用中,输入的数据和输出的数据量都非常的大都非常的大我们不可能从键盘上一个个地键入大量的输入数据,我们不可能从键盘上一个个地键入大量的输入数据,或者对着屏幕一条条分析输出结果或者对着屏幕一条条分析输出结果解决这个问题的办法是用文件:解决这个问题的办法是用文件:n文件是一种保存数据的标准结构,它由许多相互文件是一种保存数据的标准结构,它由许多相互关联的数据行组成,可以作为一个整体被存取。关联

2、的数据行组成,可以作为一个整体被存取。文件中的每个信息行称为记录。文件中的每个信息行称为记录。nFortran可以一次一个记录地从一个文件中读取信可以一次一个记录地从一个文件中读取信息或者向文件中写入信息。息或者向文件中写入信息。在在Fortran中读写文件的方法:中读写文件的方法:输入输入/输出单元(输出单元(I/O单元,单元)单元,单元)nI/O单元与单元与READ(*,*)和和WRITE(*,*)语句中的第一语句中的第一个星号对应个星号对应n如果这个星号被如果这个星号被I/O单元代号代替,那么相应的读单元代号代替,那么相应的读写设备将由该单元指定,替代标准写设备将由该单元指定,替代标准I

3、/O设备设备n除此之外,其它格式与之前所学没有区别除此之外,其它格式与之前所学没有区别文件操作相关语句文件操作相关语句OPENCLOSEREADWRITEREWINDBACKSPACE8.1.1 OPEN语句语句OPEN语句将一个文件和一个给定的语句将一个文件和一个给定的I/O单元号关联单元号关联OPEN(open_list)open_list包含一组子句,分别指定包含一组子句,分别指定I/O单元号、文件单元号、文件名和关于如何存取文件的信息名和关于如何存取文件的信息暂时只介绍最重要的六项:暂时只介绍最重要的六项:UNITFILESTATUSACTIONIOSTAT1)UNIT=int_exp

4、r2)FILE=char_expr char_expr是一个包含要打开文件的名称的字符值是一个包含要打开文件的名称的字符值3)STATUS=char_exprchar_expr指定要打开文件的状态,可以取:指定要打开文件的状态,可以取:OLD,NEW,REPLACE,SCRATCH,UNKNOW4)ACTION=char_expr指定文件以只读、只写或读写方式打开,可取:指定文件以只读、只写或读写方式打开,可取:READ,WRITE,READWRITE,如果没有指定,文件如果没有指定,文件以读写方式打开以读写方式打开5)IOSTAT=int_var OPEN语句如果成功执行,会给语句如果成功执

5、行,会给int_var赋值赋值0,如果不,如果不成功,相应错误的整数代码会赋值给成功,相应错误的整数代码会赋值给int_var例:例:打开一个文件打开一个文件input.dat,并将其连接到,并将其连接到I/O单元单元8INTEGER:ierrorOPEN(UNIT=8,FILE=input.dat,STATUS=OLD&,ACTION=READ,IOSTAT=ierror)例:例:打开一个文件打开一个文件output.dat,并将其连接到,并将其连接到I/O单元单元18INTEGER:ierrorOPEN(UNIT=18,FILE=output.dat,STATUS=&NEW,ACTION=

6、WRITE,IOSTAT=ierror)nSTATUS=NEW子句指明文件是新文件,如果文子句指明文件是新文件,如果文件已经存在,那么件已经存在,那么OPEN语句就给变量语句就给变量ierror返回返回一个错误代码,确保不会覆盖掉已有的文件一个错误代码,确保不会覆盖掉已有的文件n如果用如果用STATUS=REPLACE,情况就不一样情况就不一样例例打开一个临时文件打开一个临时文件OPEN(UNIT=12,STATUS=SCRATCH,&IOSTAT=ierror)n临时文件由程序建立,当文件被关闭或程序终止临时文件由程序建立,当文件被关闭或程序终止运行时,它将被自动删除。运行时,它将被自动删除

7、。n这类文件可在程序运行时保存中间结果,注意程这类文件可在程序运行时保存中间结果,注意程序结束后,就不再可用了。序结束后,就不再可用了。8.1.2 CLOSE语句语句CLOSE语句关闭一个文件并释放与之关联的单元号语句关闭一个文件并释放与之关联的单元号CLOSE(close_list)nclose_list也是一个子句序列,这里我们暂时只掌也是一个子句序列,这里我们暂时只掌握不可少的子句:指定握不可少的子句:指定I/O号号n在关闭一个非临时文件后,随时还可以用在关闭一个非临时文件后,随时还可以用OPEN再次打开再次打开n再次打开可以分配与上次一样或不一样的单元号再次打开可以分配与上次一样或不一

8、样的单元号nCLOSE释放出来的单元号可以分配给其它文件释放出来的单元号可以分配给其它文件nCLOSE(UNIT=12)8.1.3 磁盘文件的读写磁盘文件的读写 以自由格式从文件以自由格式从文件input.dat中读取变量中读取变量x,y,zOPEN(UNIT=8,FILE=input.dat,STATUS=&OLD,IOSTAT=ierror)READ(8,*)x,y,z以特定格式向文件以特定格式向文件output.dat写入变量写入变量x,y,z的值的值OPEN(UNIT=9,FILE=output.dat,STATUS=&REPLACE,IOSTAT=ierroe)WRITE(9,100

9、)x,y,z100 FORMAT(x=,F10.2,y=,F10.2,z=,F10.2)8.1.4 READ语句中的语句中的IOSTAT如果如果READ语句执行失败,程序会异常中断。语句执行失败,程序会异常中断。为了让程序更为友好以及便于调试,在为了让程序更为友好以及便于调试,在READ语句语句中可以增加中可以增加IOSTAT子句。子句。形式为:形式为:READ(unit,FORMAT,IOSTAT=int_var)int_var这个整型变量会返回这个整型变量会返回READ执行的状态执行的状态n如果如果READ成功执行,值为成功执行,值为0n如果文件或格式错误,值为非如果文件或格式错误,值为非

10、0正数(错误代码)正数(错误代码)n如果因到达输入文件尾部而导致失败,值为负数。如果因到达输入文件尾部而导致失败,值为负数。应用举例:应用举例:example1.f90PROGRAM read_fileIMPLICIT NONECHARACTER(len=20):filenameINTEGER:nvals=0INTEGER:statusREAL:valueWRITE(*,*)Please enter input file name:READ(*,*)filenameWRITE(*,1000)filename1000 FORMAT(,The input filename is:,A)OPEN(U

11、NIT=3,FILE=filename,STATUS=OLD,ACTION=READ,IOSTAT=status)openif:IF(status=0)THENreadloop:DOREAD(3,*,IOSTAT=status)valueIF(status/=0)EXITnvals=nvals+1WRITE(*,1010)nvals,value1010 FORMAT(,Line,I6,:Value=,F10.4)END DO readloopreadif:IF(status0)THENWRITE(*,1020)nvals+11020 FORMAT(,An error occurred read

12、ing line ,I6)ELSEWRITE(*,1030)nvals1030 FORMAT(,End of file reached.There were ,I6,values int the file)END IF readifELSE openifWRITE(*,1040)status1040 FORMAT(,Error opening file:IOSTAT=,I6)END IF openifCLOSE(UNIT=3)END PROGRAM read_file8.1.5 文件定位文件定位普通的普通的Fortran文件是顺序文件文件是顺序文件-读取顺序是从文读取顺序是从文件中的第一个记录

13、开始到文件中的最后一个记录件中的第一个记录开始到文件中的最后一个记录如何在文件内部定位读取?如何在文件内部定位读取?BACKSPACE(UNIT=unit)回退一条记录回退一条记录REWIND(UNIT=unit)从文件头重新开始文件从文件头重新开始文件两个语句也可以加两个语句也可以加IOSTAT,检查错误,防止异常终,检查错误,防止异常终止止例:例:example2.f90PROGRAM scratch_fileIMPLICIT NONEINTEGER,PARAMETER:LU=8REAL:dataINTEGER:icount=0INTEGER:irecINTEGER:jOPEN(UNIT=

14、LU,STATUS=SCRATCH)WRITE(*,100)100 FORMAT(1X,Enter positive or zero input values.,/,&1X,A negative value terminates input.)DOWRITE(*,110)icount+1110 FORMAT(1X,Enter sample,I4,:)READ(*,*)dataIF(data=1).AND.(irec=icount)THENREWIND(UNIT=LU)DO j=1,irecREAD(LU,*)dataEND DOWRITE(*,140)irec,data140 FORMAT(1X,The value of record,I4,is,ES14.5)ELSEWRITE(*,150)irec150 FORMAT(1X,Illegal record number entered:,I8)END IFCLOSE(LU)END PROGRAM scratch_file

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!