返回介绍

7.1.5 格式化输入编辑

发布于 2025-03-08 16:28:38 字数 2152 浏览 0 评论 0 收藏 0

a) 输入规则

1) 输入时,全部是空格的区域始终解释为 O。拖后空格和分散空格的解释由 BN 和 BZ 两个编辑描述符和 OPEN 语句中 BLANK=选项来控制。正号(+) 可选的,但对指数例外。

2) F、E、EN、ES、G 和 D 编辑下的输入中,输入区域的显式小数点将覆盖编辑描述符中对小数点位置的指定。例如,READ(*,’(F4.2)’) x 当输入 123.4 时,x=123.4 而非按格式指定的 23.40。

3) 当用 I、B、O、Z、F、E、EN、ES、G、D 或 L 编辑描述符时,输入区域可以包含逗号,表示结束该区域。下一个区域开始于逗号后的第一个字符。丢掉的字符没有意义。但在使用如 T、TL、TR 或 nX 等显式编辑描述符时不能使用这个性质,因为这样将会改变数据中的字符位置。

b) 整数输入

整数输入用 I 编辑符。Iw 中的 w 规定输入数据所占的列数。在规定的字段宽度内,空格按零处理(BZ),除非用 BN 另行解释。因此必须使输入的数据在规定的字段宽度内向右端对齐。符号也包括在字段宽度内。

c) 实数、复数和双精度数的输入

实数用 F 编辑符输入:当输入数据不带小数点,由系统按指定格式自动加上小数点。输入数据可以自带小数点,如果 Fw.d 指定的小数点位置与输入数据的小数点位置不一致,按“输入数据自带小数点优先”原则。

输入实数时可以任选 F、E、EN、ES、G 编辑符,输入数据的形式可以是小数形式或指数形式。如果用指数形式输入数据而其数字部分不带小数点,则按照 Fw.d(或 Ew.d) 中 d 的值对其加上小数点。

复数输入时,按两个实数输入,双精度数用 D 编辑符输入。

d) 逻辑型和字符型数据的输入

逻辑型数据用 L 编辑符输入。输入的数据可以是.TRUE.(真) 或.FALSE.(假),也可以是以 T 或 F 字母开头的任何字符串。

字符型数据的输入用 A 编辑符。不指定字段宽度 w 则自动按字符变量的定义的长度截取所需字符。

e) BN、BZ 编辑符

BN,BZ 编辑符在数字输入字段中控制着空格的解释。BN 编辑符忽略数字输入字段中内嵌和后续空格,使格式控制器仅使用字段上的所有非空格字符,并使它们向右对齐。例如,对于 READ(*,’(BN,I6)’) n,输入以下 3 个值后按回车键:

123

123

123 456

READ 语句将这三个输入值都理解为 123。因为只有前 6 个字符才作为 n 的数值,且 123 前后的空格都被忽略了。

BZ 编辑符使结尾空格符和分散空格符为零,而开头空格符仍为零。例如,对于 READ(*,’(I6)’) n,当输入 123 后按回车键,则 n 值为 123000。

f) Q 编辑符和可变格式输入

Q 编辑描述符返回当前输入记录中剩余的字符数。对应的 I/O 列表中的数据项必须是整型或逻辑型的。

例:READ(4,’(E15.7,I4,Q,(80A1))’)XRAY,KK,NCHRS,(ICHR(I),I=1,NCHRS)

输入语句首先读出前面 XAY 和 KK 的变量值。记录中后面剩余的字符数赋值给 NCHRS,然后字符数组 ICHAR 读入的字符数即为准确的待读字符数。通过将 Q 作为格式说明的第一项,可以确定待输入记录的长度。

注意由 Q 返回的长度是记录左边的字符串的长度,不是实数,或整数或其他数据类型的长度。一旦由 Q 读出长度,此值可以立即使用,或者用于可变格式表达式中。下面是可变格式输入的例子:

例:INTEGER width, value

width=2

READ (*,10) width, value

10 FORMAT(I1, I <width>)

PRINT *, value

END

当输入 3123 时,打印输出值是 123 而非 12。

g) 输入格式指定和 I/O 列表

一条编辑指定为空的 FORMAT() 格式 READ 语句将跳过相邻的下一个记录,除非输入输出设置成 ADVANCE=’NO’,这时文件位置将保持不变。记录中的字符如果少于编辑符指定的长度,在右侧会填以空格,除非在 OPEN 语中指定 PAD=’NO’。用户输入的空格的解释取决于空格编辑描符(BN 或 BZ) 的作用或 OPEN 语句中的 BLANK=选项。BN 和 BZ 的优先级比 BLANK=选项要高。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文