我有一个文本文件,在同一行上有两个数字
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
当我尝试删除read命令中的format选项时,这是我收到的跟随错误
At line 686 of file MCNPT.f (unit = 10, file = 'LATTICE-256.txt')
Fortran runtime error: Missing format for FORMATTED data transfer
答案 0 :(得分:3)
从使用无格式输入转换为格式化输入需要三个操作:
你已经完成了前两个。 [如果你不知道,删除form='unformatted'
意味着使用了默认的格式化I / O.]
剩下的就是在后续read
中使用格式说明符。这是编译器抱怨的地方。
要使用的最简单的格式化读取是 list-directed ,它由fmt=*
中的read
说明符给出。这应该足以满足您的需求,但您应该确保您对其局限性感到满意。
准确地说:替换
OPEN ( UNIT = CNUNIT, FILE = CNFILE, STATUS = 'OLD',
: FORM = 'UNFORMATTED' )
READ ( CNUNIT ) NN, BOX
与
OPEN ( UNIT = CNUNIT, FILE = CNFILE, STATUS = 'OLD')
READ ( CNUNIT, * ) NN, BOX