fortran 90 文件(文件的操作语句)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
土木学院
13.1有格式顺序存取文件 --顺序文件输入输出的基本规则
一个WRITE语句总是开始一个新的记录; 一般来说,对同一个文件在进行写操作之 后要进行读操作时,必须先使用文件定位 语句,重新设置指针位置 (Open语句、 Rewind语句以及Backspace语句等); 也可以使用表控输入输出语句对文件进行 格式输入输出,如:WRITE(3,*) N,M。
土木学院
土木学院
数据输 入和数 据处理
数据 输出
100 200
character*8 Fname1 Integer U1 U1=3 Fname1='F1.DAT' Open(Unit=U1,File=Fname1,Status='OLD', $ Access='Sequential',Form='Formatted') Read(U1,100) A,B C=A+B Open(Unit=2,File='F2.DAT',Status='New', $ Access='Sequential',Form='Formatted') Write(2,200) 'A=',A, 'B=', B Write(2,200) 'C=',C Close (U1) _123.1_123.2 F1.DAT的内容 Close(2) Format(2F6.1) A=_123.10 B=_123.20 Format(2(A,F7.2)) C=_246.30 F2.DAT的内容 End 注:该源文件与数据文件放在同一目录中
下面举例:
1)建立一个直接存取文件; 2)根据用户输入记录号,输 出该记录。
在直接存取文件中每个记录 的长度是相等的,但真正写 到文件中的实际字节的个数 可以比说明的长度短。
土木学院
10 100
20 200
Parameter(N=10) 记录的长度,以字节为单位。 Open(12,File=‘Datb.Dat’,Status=‘New’, 在直接存取文件中每个记录 $ Access=‘Direct’,Form=‘Formatted’,Recl=16 ) 的长度是相等的,但真正写 Do 10 I=1,N 到文件中的实际字节的个数 可以比说明的长度短。 Write(12,100,Rec=I) I,Sqrt(Real(I)) Continue 记录号:是不可少的参 Format(I3, E13.6) 数,文件的第一个记录 的记录号为1 1-10的开方值 Close (12) Open(10,File=‘Datb.Dat’,Status=‘old’, $ Access=‘Direct’,Form=‘Formatted’,Recl=16 ) 读出该记录后再用 Call Fromkey(k) Do 20 While(k .GE. 0) Write语句输出到屏 IF (k .LE.N .AND. K .GE. 1) THEN 幕上 Read(10,100,Rec=K) IS, S Write(*,200) IS,S Subroutine Fromkey(K) ELSE Write(*,*) ‘Enter 0 to end:’ Write(*,*) ‘Input Error!’ Endif Write(*,*) ‘Enter a Number’ Call Fromkey(K) Read(*,*) K Continue End Close (10) Format(1x,Sqrt of ‘,I2,’IS:’,F10.6) End
输入: __10.1__20.4
土木学院
Read(*,100) A,B C=A+B Write(*,200) 'A= ',A, 'B= ',B Write(*,200) 'C= ',C 100Format(2F6.1) 200Format(1X,2(A,F7.2)) End
土木学院
土木学院
13.1有格式顺序存取文件
Next 土木学院
13.2 有格式直接存取文件
直接存取可以任意确定需要读写记录的位 置; 直接存取只适用于磁盘文件; 其基本的操作与顺序存取大致相同,主要不 同的是:Open的说明、Read和Write的控制 项不同。 下面以例说明
土木学院
13.2有格式直接存取文件
主要语句: Open(12,File=‘Datb.Dat’,Status=‘Ne w’, Access=‘Direct’,Form=‘Formatted ’, 记录的长度,以字节为单位。 Recl=16 ?)
土木学院
这是打开数据 文件F2.DAT 的内容
土木学院
13.1有格式顺序存取文件
打开文件(Open):是把一个设备号和一个文件名关 联起来,这样在程序中将由设备号代替指定的文件;
Unit=ie 代表设备号(0~99) File=ce 代表文件名;
Status=se 代表文件状态:已经存在-Old; 新建-New
土木学院
13.1有格式顺序存取文件
我们已经知道:READ语句是完成数据输入
任务的。
从键盘输入一行数据(以Enter键作为确 认),这就形成了一个‚记录‛。 从键盘输入一行数据时,必须与指定的格 式对应(格式编辑符与输入的数据类型以 及宽度),否则就会出错(或报错)。
土木学院
13.1有格式顺序存取文件
土木学院
土木学院
这是打开数据 文件TAB.DAT 的内容
土木学院
Integer N(30) Real A(30), B(30), C(30) Write(*,*) ‚请从键盘上输入学号、两门成绩" Do 300 i=1,30 Read(*,101) N(I), A(I), B(I) 300 Continue Write(*,*) N,A,B U1=2 Open(Unit=2,File='F2.DAT',Status='New', $ Access='Sequential',Form='Formatted') Do 10 I=1,30 使用数组:输入30 C(I)=A(I)+B(I) write(2,150) N(I),c(I) 个学生的学号和两 10 continue 门成绩,最后将总 close(2) 成绩与学号输出来. 101 format(I3,F5.1,F5.1) 150 format(I2,3x,F5.1) End
下面我们就介绍如何从文件中获得数据: (例如:从文件F1.DAT中读取数据,经过处理 后,将结果保存在F2.DAT中) 1. 准备数据文件(可以在各种编辑器中完成, 输入格式及宽度与程序要求的一致),数据文 件名的后缀为 *.DAT(也可以是*.txt); 2. 编写数据输入和数据处理文件,最后将结 果输出到F2.DAT中.
第十三章 文 件
(FORTRAN的文件操作)
土木学院
说明:
在实际应用中,往往大量需要处理的数据是由专 门人员来采集,并构成以文件名来具体代表的数据 文件(比如大型有限元软件的数据采集也是这样的);
文件名通常由三部分组成:存放的设备、 文件名本身、文件类别;
如何从各种设备上获取和保存不同类型的数据文 件就是我们在进行科学计算时常常遇到的问题;
土木学院
这是已被打开 的数据文件的 内容
土木学院
土木学院
$
10
100 202
U1=2 Open(Unit=2,File='F2.DAT',Status='New', Access='Sequential',Form='Formatted') do 10 I=1,30 write(*,*) "请输入学号、两门成绩" Read(*,*) N,A,B C=A+B Write(2,202) '学号:', N,'总成绩',C continue 输入30个学生的学号 Close(2) 和两门成绩,最后将总 Format(I2,F5.1,F5.1) 成绩与学号输出来. Format(A,I2,A,F7.1) End
土木学院
土木学院
13.1有格式顺序存取文件 --顺序文件输入输出的基本规则
Read语句中各输入项在类型上、格式说明上必须 与输出语句的输出项按位置一一对应; Open或Rewind是从文件的第一个记录开始输入, 每执行一次Read语句,总是从一个新的记录开始 读入; 在Read语句读文件记录时,输入项少于记录中的 数据项,则剩余数据被忽略.输入项多于记录中 的数据项,它将接着去读下一个记录,直到所有项 都获得数据或者遇上文件结束标志为止; 在程序设计中对一个顺序文件不可能做到‚重写 前半部分而保留后半部分‛这样的操作。
土木学院
FORTRAN中数据文件的存储形式: 1. 字符形式(ASCII) ——称之为‚有格式存放‛ FORMATTED 2. 二进制数代码形式 ——称之为‚无格式存放‛ UNFORMATTED
土木学院
ຫໍສະໝຸດ Baidu
本章主要内容:
有格式顺序存取文件; 有格式直接存取文件; 无格式文件的存取;
文件操作语句;
有关文件操作的程序举例。
我们现在主要以磁盘设备为例来介绍FORTRAN 对文件操作的语句(打开、关闭、定位、输入和输出)
土木学院
FORTRAN的数据文件由记录组成,也就是对文 件的存取是以记录为单位进行的;
文件
记录:长度不超过规定范围的数字或文本 的集合;
记录
Fortran的数据文件按存取方式可划分为: 1. 顺序存取文件(顺序文件) 其存取操作必须从头到尾顺序进行; 2. 直接存取文件(直接文件或随机文件) 在程序的执行过程中对任意一个指定的 记录进行操作(读和写)。
顺序文件的输出操作: Write(设备号,格式说明) 输出项表
土木学院
举例:读出一个数据文件记录,并把它显示在屏幕上
Open (Unit=2,File=‘TAB.DAT’,Status=‘NEW’ $ Access=‘Sequential’ ,Form=‘Formatted’) Do 10 X=1,10 Write(2,100) X, X*X, X*X*X 10 Continue Rewind(2) 将文件指针重新设置在文件开头(与设备号2连接的文件的开头) Write(*,*) ‘ X X*X X*X*X’ 20 Read(2,100, End=30) A,B,C Write(*,200) A,B,C Goto 20 End=30表示一旦读到文件 结束标志就不再进行读操作 30 Close(2) 而转到标号为30的语句继续 100 Format(3F7.1) 执行。 200 Format(1X,3F9.2) End
土木学院
13.1有格式顺序存取文件
关闭文件(Close):解除设备号和一个文件名的关 联. CLOSE (设备号) 一次只关闭一个设备号; 在程序中的STOP\END语句都具有Close的功能 顺序文件的输入操作: READ(设备号,格式说明,END=语句标号) 变量表
与OPEN中 指定的设备 号相同 一般不写
Read(*,100) A,B C=A+B Write(*,200) ‘A= ‘,A, ‘B= ‘,B Write(*,200) ‘C= ‘,C 从键盘接收 100 Format(2F6.1) 数据,经过 处理,然后 200 Format(1X,2(A,F7.2)) 输出显示. End
输出: A=__10.10_B=__20.40 C=__30.50
Access=SD 代表文件的存取方式: Direct:以直接方式存取;Sequential: 以顺序方式存取;
Form=fe 代表文件存放格式:Formatted-字符形式
在Open中省略Access和Form,则表示打开文件为 有格式顺序存取文件.
Open(Unit=2,File='F2.DAT',Status='New', Access='Sequential',Form='Formatted')
土木学院
Parameter(N=10) Open(12,File='Datb.Dat',Status='New',Access='Direct',Form='Formatted',Recl=16 ) Do 10 I=1,N Write(12,100,Rec=I) I,Sqrt(Real(I)) 10 Continue 100 Format(I3, E13.6) 3位加13位为16位.如果Recl=13则OverFlow Close (12) Open(10,File='Datb.Dat',Status='old',Access='Direct',Form='Formatted',Recl=16 ) Call Fromkey(k) Do 20 While(k .GE. 0) IF (k .LE.N .AND. K .GE. 1) THEN Read(10,100,Rec=K) IS, S Write(*,200) IS,S ELSE Write(*,*) 'Input Error!' Endif Call Fromkey(K) 20 Continue Close (10) 200 Format(1x,'Sqrt of ',I2,'IS:',F10.6) End Subroutine Fromkey(K) Write(*,*) 'Enter 0 to end:' Write(*,*) 'Enter a Number' Read(*,*) K End
相关文档
最新文档