关键词不能为空

当前您在: 主页 > 英语 >

(完整版)fortran文件操作

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-10 17:55
tags:

-

2021年2月10日发(作者:seize)


fortran


文件操作



From:



Fortran 95


程序设计》



彭国伦



1.


文件读取的概念:



读取:


“顺序读取”和“直接读取”




保存:


“文本文件”和“二进制文件”

< p>



二进制文件:读取快,因为保存格式和数据在 内存中的保存方法一样,同时也节省空间。



-------- --------------------------



2.


文件的操作:



----------------------------------



open


的使用:使用


open


命令打开文件之后,就可以对文件来做输入输出。



example:


program ex0901


impicit none


open(unit=10, file='') !


打开



文件


, unit


指定文件代码,


file


指定 文件名称。



write(10, *)

在代码为


10


的文件中写入


hel lo


stop


end program ex0901 < /p>


open


中有很多参数可以使用,详细如下:


OPEN(UNIT=number,


FILE='filename',


FORM='...',


STATUS='...',


ACCESS='...',


RECL=length,


ERR=label,


IOSTAT=iostat,


BLANK='...',


POSITION='...',


ACTION=action,


PAD='...', DELIM='...')


UNIT='number'



nu mber


必须是一个正整数,它可以使用变量或是常量来赋值。


number



好避开


1,2,5,6


。因为


2,6


是默认的输出位置,也就 是屏幕。


1



5


则是默认的输入位置,键


盘。



FILE='filename'




指定要打开的文件名称,文件名要符合系统规定。


window s


下不区分大


小写,


unix


下则会区分大小写,最好不要使用中文文件名。



FORM='FORMATTED' OR 'UNFORMATTED'


FORM


字段只有两个值可以设置:



FORM='FORMATTED'


“文本文件”格式来保存



FORM='UNFORMATTED'


“二进制文件”格式保存



这一栏不给定时候的默认值是


: FORM='FORMATTED'


STATUS='NEW' or 'OLD' or 'SCRATCH' or 'UNKNOWN'


用来说明打开一个新的文件或 已经存


在的旧文件。



STATUS='NEW'


打开一个原本不存在的新文件



STATUS='OLD'


打开一个原来已经存在的文件



STATUS='REPLACE'


若文件已经存在则重 新创建一次,原来的内容消失;若不存在则会创


建新文件。



STATUS='SCRATCH'


表示要打开一个暂存 文盘,这个时候可以不需要指定文件名称,也就



FILE


这个一栏可以忽略。


因为程序本身会自动取一个文件名,

< p>
至于文件名是啥也不重要,


因为暂存盘会在程序结束后自动删除。



STATUS='UNKNOWN'


由各编 译器自定义。通常会同


REPLACE


的效果。



!这一栏不给定时,默认为


STATUS='UNK NOWN'




ACCESS='SEQUENTIAL' or 'DIRECT'


设置读写文件的方法:



ACCESS='SEQUENTIAL'


读写文件的 操作会以


“顺序”


的方法来做读写,


“ 顺序读取文件”




ACCESS='DIRET'


读写文件 的操作可以任意指定位置,


“直接读取文件”




!不赋值时候,默认为:


ACCESS='SEQUENTIAL'




RECL=length


在顺序读取文件中,


RECL


字段值用来设置一次可以读取多大容量的数据。



打开“直接读取文件”



RECL



length


length


值是用来设置文件中每一个模块单元的分


区长 度。



length


的单位在文本根式 下为


1


个字符,也就是


1 byte< /p>


。在二进制格式下则由编译器自行


决定,一般可能为


1 byte (G77)



4 byte (Visual Fortran)




ERR=LABEL


这个字段用来设置当文件打开发生错误时 ,


程序会跳跃到


LABEL


所指定的行 代码


处来继续执行程序。



IOSTAT=var


这个字段会设置一个整数值给后面的整 型变量,


这是用来说明文件打开的状态,


数值会有下面三种情况 :



var>0


表示读取操作错误



var=0


表示读取操作正常



var<0


表示文件终了




BLANK='NULL' or 'ZERO'


用来设置输 入数字时,当所设置的格式字段中有空格存在时所代


表的意义。



BLANK='NULL'


时,空格代表没有东西。

< p>
BLANK='ZERO'


时,空格部分会自动以


0


代入。




以下是


Fortran 90


添加的功能:



POSITION='ASIS' or 'REWIND' or 'APPEND'


设置文件打开时候的读写位置:



POSITION='ASIS'


表示文件打开时的读取 的位置不特别指定,


通常就是在文件的开头。



默认值。



POSITION='REWIND'


表示文件打开时的读取位置移到文件的开头。



POSITION



'APPEND'


表示文件打开时的读取位置移到文件的结尾。




ACTION='READ' or 'WRITE' or 'READWRITE'


设置打开文件的读写权限:



ACTION='READWRITE'


表示所打开的文件可以用来读取及写入,这是默认值。



ACTION='READ'


表示所打开的文件只能用来读取数据。



ACTION='WRITE'


表示所打开的文件只能用来写入数据。




PAD='YES' or 'NO'


PAD='YES'


在格式化输入时,

< br>最前面的不足字段会自动以空格填满,


默认值是


PAD= 'YES'




PAD='NO'


在格式化输入时,不足的字段不会自动以空格填满。



DELIM='APOSTEROPHE' or 'QUOTE' or 'NONE'


DELIM='NONE'


纯粹输出字符串内容



DELIM='QUOTE'


输出字符串内容会在前后加上双引号



DELIM='APOSTEROPHE'


输出字符串内容会在前后加上单引号



---------------------------------------


--




WRITE & READ


的使用(详细)




WRITE/READ(UNIT=number,


FMT=format,


NML=namelist,


REC=record,


IOSTAT=stat,


ERR=errlabel, END=endlabel, ADVANCE=advance, SIZE=size)



UNIT=number


指定


read/write


所使用的输入输出的位置。



FMT



format


指定输入输出格式的使用。



NML=namelist


指定读写某个


NAMELIST


的内容(后续介绍)




REC=record


在直接读取文件中,设置所要读写的文件的模块位置。



IOSTAT=stat


会设置一个数值给在它后面的变量,用来说明文件的读写状态。



stat>0


表示读取操作发生错误。



stat=0


表示读取操作正常。



stat<0


表示文件终了。



ERR=errlabel


指定在读写过程中发生错 误时,会转移到某个行代码来继续执行程序。



END=endlabel


指定在读写到文件末尾时, 要转移到某个行代码来继续执行程序。




以下是


fortran 90


添加功能:



ADVANCE='YES' or 'NO'


设置在文本格 式下的顺序文件中,每一次的


READ,WRITE


命令完成< /p>


后,




读写



位置会不会自动想下移动一行。



ADVANCE='YES'


是默认的状态,每读写一次会向下移动一行。



ADVANCE='NO'


会暂停自动换行的操作。




!使用这个字段时候一定要设置输出入格式,在屏幕输出时可以使用这个设置来控制


write


命令是否会自动换行。



SIZE=count



ADV ANCE='NO'


时,才可以使用这个字段。它会把这一次输出入的字符数目


设置给后面的整型变量。



--------- -------------------------




查询文件的状态


INQUIRE:


在 使用


open


打开文件的前后,都可以通过

inquire


命令来查询文件目前的情况,


inquir e


命令中的各个字段和第一小节中


open

的字段很类似。



example: !


检查某个程序是否存在



program ex0903


implicit none


character(len=20) :: filename =


logical alive



inquire(file=filename, exist=alive)


if(alive) then


write (*, *) filename,


else


write (*, *) filename,


end if


stop


edn program ex0903


< br>详细介绍


inquire


的使用方法:

< br>


INQUIRE(UNIT=number,


FILE=filename,


IOSTAT=stat,


ERR=label,


EXIST=exist,


OPENED=opened,


NUMBER=number, NAMED=named, ACCESS=access, SEQUENTIAL=sequential,


DIRECT=direct,


FORM=form,


FORMATTED=formatted,


UNFORMATTED=unformatted,


RECL=recl)



UNIT=number


文件代号



FILE=filename


文件名



IOSTAT=stat


查询文件读取情况,会设置一个整数给后面的变量:



stat>0


文件读取操作错误



stat=0


文件读取操作正常



stat<0


文件终了



ERR=errlabel


发生错误时会转移到复制的代码行继续执行程序。



EXIST=exist


检查文件是否存在,返回布尔 变量,真表示存在,假值表示不存在。



OPEND=opened


检查文件是否用已经用

< p>
open


打开,


返回布尔变量,

< br>真表示已经打开,


假表示


尚未打开。


NUMBER=number


用文件名来查询这个文件所给定的代码。



NAMED=named


查询文件是否取了名字,


也就是检查文件是否为临时保存盘,


返回值为逻辑

数。



ACCESS=access


检查文件的读取格式,返回一个字符串,可以是:



'SEQUENTIAL'


代表文件使用顺序读取格式



'DIRECT'


代表文件使用直接读取格式



'UNDEFINED'


代表没有定义



SEQUENTIAL=sequential


查看文件是否使用顺序格式,会返回一个字符串,可以是:



'YES'


代表文件是顺序读取文件



'NO'


代表文件不是顺序读取文件



'UNKNOWN'


代表不知道



DIRECT



direct


查看文件是否使用直接格式,会返回一个字符串,可以是:



'YES'


文件是直接读取文件



'NO'


文件是非直接读取文件



'UNKNOWN'


代表不知道



FORM=form


查看文件的保存方法,返回字符串,可以是:



'FORMATTED'


打开的是文本文件



'UNFORMATTED'


打开的是二进制文件



'UNDEFINED'


没有定义



FORMATTED=fmt


查看文件是否是文本文件,返回字符串,可以是:



'YES'


本文件是文本文件



'NO'


本文件非文本文件



'UNDEFINED'


无法判断



UNFORMATTED=fmt


查看文件是否是二进制文件,返回字符串,可以是:



'YES'


本文件是二进制文件



'NO'


本文件非二进制文件



'UNKNOWN'


无法判断



RECL=length


返回


open


文件时

< br>recl


栏的设置值。



NEXTREC=nr


返回下一次文件读写的位置。


-


-


-


-


-


-


-


-



本文更新与2021-02-10 17:55,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/630544.html

(完整版)fortran文件操作的相关文章