_fortran-第五章 基本IO

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5.3.2 实数输出-----F 描述符
rFw.d
实数数值在其域内以右对齐方式打印输出。
pl =3.141593
F7.3格式描述: bb3.142
F10.8 格式描述:3.14159300
F4.3格式描述: ****
5.3.3 实数输出-----E 描述符
rEw.d
0.4096x104 0.4096E+04
5.1 格式和格式化 WRITE 语句
格式可用来指定程序输出打印变量的确切方 式。通常格式可以指定变量在纸上的水平和 垂直位置,也可指定要输出打印的有效位数。
WRITE (*, 100 ) i, resu1t 100 FORMAT (' The resu1t for iteration ', I3, 'is' , F7.3)
输入 结果:i=1, j=2, k=3, l=7, m=8
5.5 文件及文件处理初步
一般I/O单元5 预定为程序的标准输入设备(即, 如果在终端上运行就是键盘,如果以批处理方式 运行就为输入批处理文件)。与此相似, I/O单元 6 通常预定为程序的标准输出设备(如果在终端 上运行就为显示器,如果以批处理方式运行就为 行式打印机)。更通用的是用*表示。
Fortran95/2003程序设计
第五章 基本IO
本章学习目标:
•了解如何使用格式化的WRITE 语句建立整齐的格式化 程序输出结果
• 学习如何使用I, F, E, ES, L, A, X, T 和/格式描述符 • 了解如何使用格式化READ语句将数据读入到程序中 • 了解如何打开、读取、写、浏览和关闭文件
E 格式描述符域的宽度必须满足
wd 7 0.ddddE ee
一个字符用于表示尾数的符号,两个字符用于表示 零和小数点,一个字符用于表示E ,一个字符用于 表示指数的符号,两个字符用于表示指数。
在E 格式描述符中,小数点前面的零是可选的。它是 否存在,不同的编译器厂商有不同的处理。一些编译 器显示前面的零,而另一些可能不显示。
1X 描述符通常用在每个FORMAT 语句的开头, 确保控制字符包含一个空格。这种方式保证每 行的输出正好打印从该行的最左端开始。
5.3.8 格式描述符组的重复执行
5.3.9 改变输出行----斜线(/) 描述符 换行,在超过一个输出行上显示输出值。
5.3.10 如何在WRITE 语句中使用格式 (1)以从左至右的顺序扫描格式
5.3.6 字符输出-----A 描述符
rA 或 rAw
如果域宽w比字符变量的长度长,变量就在域内右对 齐打印输出。如果域宽比字符变量的长度短,那么在 该域内就只有变量的前w 个字符能打印输出。
5.3.7 水平定位----X 和T 描述符
nX
插入n个空格
跳到第c列
Tc
在使用T 描述符时,要注意确保打印域不会交叠.
变量i 的格 式描述符
result 的格 式描述符
与用自由格式在同一行打印输出结果相比, 结果输出如下 The result for iteration 21 is 3.142 (格式化)
The result for iteration 21 is 3.141593 (自由格式) 除了FORMAT 语句,还可以在字符常量或变 量中指定格式,例如:
IOSTAT= int_var
如果成功,就返回0 。如果由于文件或格式错 误, READ 语句执行失败,就给该变量返回一 个与系统错误信息对应的正数。如果由于已经 到达输入数据文件的尾部而使语句执行失败, 就给该变量返回一个负数。 如果Fortran 2003 READ 语句包含IOMSG=子 句,而且返回的I/O 收态为非零值,那么 IOMSG=子句返回的字符串就可以用语句解释 发生的错误。
5.5.1 OPEN 语句
其中open-list 包含指定的I/O 单元代号、文 件名和关于如何存取文件的信息:
(I) UNIT= 指明与文件关联的I/O单元代号。
UNIT=int_expr (非负整数) (2) FILE= 指定要打开的文件名。
FILE=char_expr (文件名)
(3) STATUS= 指定要打开文件的状态。
例题5-3 从文件中读取数据 5.5.5 文件定位
BACKSPACE 语句,每次调用它都可以回 退一个记录;REWIND语句可以在文件头 重新开始文件。
BACKSPACE (UNIT=unit)
REWIND (UNIT=unit)
例题5-4 使用文件定位命令
5.3 格式描述符 有许多不同的格式描述符。它们分为四个基本 的类别: 1. 描述文本行垂直位置的格式描述符。 2. 描述行中数据水平位置的格式描述符。 3. 描述数值输出格式的格式描述符。 4. 控制格式中一部分的重复的格式描述符。
5.3.1 整数输出-----I 描述符
rIw 或rIw.m
整数数值在其域内为右对齐,整数的打印会 使整数的最后一位占据域的最右边的一列。 如果整数过大,不能放入到它要打印的域, 那么该域就用星号填充。例如:
STATUS= char_expr
('OLD' , 'NEW' , ‘REPLACE' , 'SCRATCH' , 'UNKNOWN' ) (4) ACTION=指定一个文件是否以只读、只 写或读写方式打开。 ACTION= char_expr (‘READ’ , ‘WRITE’ , ‘READWRITE’, 缺省为读 写方式)
5.4.5 水平定位------X 和THale Waihona Puke Baidu描述符
读取输入缓冲区的第1 个~第6 个字符,一次 读为整数,一次读为字符串。 5.4.6 垂直定位---斜线(/)描述符 使READ 语句放弃当前输入缓冲区中的内容, 然后从新的输入缓冲区的头部开始处理
输入
结果:a=1.0, b=2.0, c=7.0, b=8.0
5.4.7 在READ 语句中如何使用格式 1.如果READ 语句在格式结束前用完了所有变 量,则格式在读取的最后一个变量后就停止。 下一个READ 语句将从一个新的输入行开始。
输入
结果:i=1, j=2, k=6, l=7, m=8
2. 如果扫描在READ 语句用完变量之前到达了 格式的尾部,那么程序就将丢弃当前的输入缓 冲区。它重新获取一个新的输入缓冲区,并在 格式中没有以重复次数开头的括号的最左边重 新开始。
5.3.4 真正的科学记数-----ES 描述符 E 格式描述符的输出与常规的科学记数不能正 确匹配。常规的科学表示法将一个数表示为一 个1.0~ 10.0 之间的数乘以10 的幂。
rESw.d
wd 7 a.ddddE ee
5.3.5 逻辑输出------L 描述符
rLw
输出为T 或F ,在输出域内在右对齐。
临时文件是由程序建立的临时文件,当文件被关闭 或当程序终止运行时,它将被自动删除。
5.5.2 CLOSE语句
CLOSE 语句关闭一个文件并释放与之关联的 I/O单元代号。
CLOSE (close list)
5.5.3 磁盘文件的READ (读)和WRITE (写)
自由格式读取
特定格式读取
5.5.4 READ 语句中的IOSTAT=和IOMSG=
WRI TE ( *, 100 )i,x !在FORMAT 语句中的格式 100 FORMAT(lX ,I6 , F10.2) CHARACTER (len 20) ::string !在字符变量中的格式 string ='(lX ,I6 , F10.2)' WRITE (*, string) i,x WRITE (*, '(lX, I6, F10.2) ') i , x !在字符常量中的格式
rFw.d
输入
结果: a=b=c=1.5
输入
结果: a=0.0015, b=0.0150, c=1.5000
在实数输入域中使用不带小数点的数值非常混乱。它是从 Fortran 早先的版本遗留下来的产物,永远不要使用它。
5.4.4 字符输入-----A 描述符
输入
结果:string_1=ABCDEFGHIJ=string_2 String_3=FGHIJ, string_4=ABCDEFGHIJbbbbb String_5=ABCDEFGHIJKLMNO
(2) 如果一个格式描述符带有一个与之相关的重 复次数,那么在使用下一个描述符之前,该描 述符将按在重复次数中指定的次数使用。
(3)如果包含在括号内的一组格式描述符带有与 之相关的重复次数,那么在使用下一个描述符 之前,整个组将按重复次数中指定的次数使用。
(4)如果WRITE 语句在格式结束前用完了所有变 量,输出停在第一个没有对应变量的格式描述符 处。
5.4 格式化READ 语写
输入缓冲区的前6列被跳过,然后第7 列到第 12 列的内容视为整数,结果数值保存在变量 increment 中。 READ语句相关的格式所使用的大多数格式 描述符与WRITE 语句相同。
5.4.1 整数输入-----I 描述符
r Iw
5.4.2 实数输入-----F 描述符
(5) 如果在WRITE 语句用完数值之前,扫描到 了格式的结尾处,程序就在格式中没有以重复 次数开头的括号的最左边重新开始。
例题5-1 生成一个表格。
例题5-2 电容器的电荷
每库仑的电荷有 6.241461xl0 18 个电子。 (1)对于己知的电容和电压,计算金属板上的电荷量,金属板上电 子的个数,以及存储在电场中的能量。 (2) 对于己知的电荷和电压,计算电容器的电容,金属板上电子个 数和存储在电场中的能量。
(5) IOSTAT= 指定一个整数变量名,打开操作 的状态可以返回到这个变量中。 IOSTAT= int_var 如果OPEN 语句成功执行,返回给这个整数 变量的值为0 。如果OPEN 语句未执行成功, 与系统错误信息相关的正整数。 (6) (FRTRAN 2003 新特性) IOMSG=指定一 个字符变量名,如果发生错误,它就包含错误 信息。 IOMSG=chart_var char var 为字符变量。如果成功,其值不变,如 果失败,返回描述错误的信息。
相关文档
最新文档