以前的SO问题中已经涵盖了该问题。但是,以前的讨论似乎不完整。

Fortran有几个I / O语句。有READ(*,*)WRITE(*,*)等。第一个星号(*)是指定从键盘向屏幕输入或从屏幕输出的标准星号。我的问题是关于第二个星号:

第二个星号指定I ​​/ O元素的格式,即正在使用的数据类型。如果此星号保持不变,则fortran编译器将使用默认格式(无论哪种格式,基于编译器)。用户必须使用许多格式描述符来指定数据类型,精度等。

(1)这些格式描述符是否对所有Fortran编译器和Fortran的所有版本通用?

(2)在哪里可以找到这些格式描述符的标准列表?例如,F8.3表示数字应使用定点表示法打印,字段宽度为8位,小数点后3位。

编辑:可在此处找到编辑描述符的参考:http://fortranwiki.org/fortran/show/Edit+descriptors

最佳答案

首先,为澄清起见,READ / WRITE语句中的第一个星号的含义与您声明的含义略有不同。对于写操作,它意味着写到默认文件单元(在Linux世界中通常是标准输出),对于读它意味着是从默认文件单元(在Linux世界中通常是标准输出)中读取,这两个文件都不一定要连接到终端屏幕或键盘。

第二个星号表示使用列表指示的IO。对于已读语句,这通常很有用,因为您不需要为输入指定格式。它将行分成由空格或逗号分隔的字段(可能是不常用的其他几个字段),然后依次将每个字段读入参数列表中与该字段关联的变量,忽略未读的字段,然后继续如果没有读入足够多的字段,则下一行(除非明确包含行终止符\)。

对于写操作,这意味着允许编译器确定将变量写出的格式(我相信没有分隔符)。我相信可以在运行时执行此操作,因此几乎可以保证它尝试写入的值都适合所使用的格式说明符,因此可以确保不会将*******写入。缺点是您必须在参数列表中手动添加分隔符,否则所有数字将一起运行。

通常,使用列表定向读取为用户提供了更多便利,因此,他们不必将输入内容严格地定义在严格定义的字段中,并且列表定向写入对于程序员来说是一种便利,以防万一他们不确定要做什么。输出看起来像。

关于fortran - Fortran READ(*,*),WRITE(*,*)参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30607829/

10-13 09:53