我有一个文本文件,同一行有两个数字
108 6.7522
我有一个 fortran 子例程 READCN,它将文本文件中的数字 108 6.7522 存储到变量 NN 和 BOX 中
SUBROUTINE READCN ( CNFILE, BOX )
CHARACTER CNFILE*(*)
REAL BOX
INTEGER CNUNIT
PARAMETER ( CNUNIT = 10 )
INTEGER NN
OPEN ( UNIT = CNUNIT, FILE = CNFILE, STATUS = 'OLD',
: FORM = 'UNFORMATTED' )
READ ( CNUNIT ) NN, BOX
WRITE(*,*) NN, BOX
CLOSE ( UNIT = CNUNIT )
RETURN
END
READCN 变量 NN BOX 的输出是
3.2997999 2.74554597E-31
如何正确读取数值?
这个程序取自http://www.ccl.net/cca/software/SOURCES/FORTRAN/allen-tildesley-book/f.12 http://www.ccl.net/cca/software/SOURCES/FORTRAN/allen-tildesley-book/f.12
当我尝试删除读取命令中的格式选项时,这是我收到的以下错误
At line 686 of file MCNPT.f (unit = 10, file = 'LATTICE-256.txt')
Fortran runtime error: Missing format for FORMATTED data transfer
从使用未格式化的输入转变为格式化输入需要三个操作:
- 将输入更改为“文本文件”;
- 打开文件进行格式化而不是未格式化的 I/O;
- 提供读取语句的格式。
您已经完成了前两项。 [如果您不知道,请删除form='unformatted'
表示使用默认的格式化 I/O。]
剩下的就是在后续中使用格式说明符read
s。这就是编译器抱怨的地方。
最简单的格式化读取使用是列表导向,由下式给出fmt=*
中的说明符read
。这对于您的情况来说应该足够了,但是您应该确保您对其局限性感到满意。
准确来说:替换
OPEN ( UNIT = CNUNIT, FILE = CNFILE, STATUS = 'OLD',
: FORM = 'UNFORMATTED' )
READ ( CNUNIT ) NN, BOX
with
OPEN ( UNIT = CNUNIT, FILE = CNFILE, STATUS = 'OLD')
READ ( CNUNIT, * ) NN, BOX
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)