我想在Fortran中使用扩展名(.for)获取新文件,例如: p12.12332.txt
我做了:
CHARACTER filename*20
REAL tmp = 12.12332
filename = 'p00000000.txt'
write(filename(2:9),'(F12.5)') tmp
但我无法获取文件,我得到了
Fortran runtime error: End of record
有什么问题? 如何通过Fortran提交“p12.12332.txt”?
答案 0 :(得分:1)
你说。我得到的是运行时错误。我一无所获,
Fortran runtime error: End of record
gfortran forrtl: severe (66): output statement overflows record
代表 ifort 那是因为你试图将12个字符写入8个字符的缓冲区。
你可以做的第一件事是纠正长度:
write(filename(2:9), '(F8.5)') tmp
但如果tmp < 10
,这会导致意外行为:p和数字之间会有一个空格,如下所示:p 2.12332.txt
我认为如果你每次都重新构建整个文件名会更好:
write(filename, '("p", F0.5, ".txt")') tmp
write(filename, '(A1, F0.5, A4)') "p", tmp, ".txt"
(其中任何一个都可以。)
这将更改文件名的长度:
p12.23321.txt
p2.23321.txt
否则你将不得不尝试使用前导零,这里描述: How to pad FORTRAN floating point output with leading zeros?