Fortran获取新文件名

时间:2015-10-20 21:40:20

标签: file fortran

我想在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”?

1 个答案:

答案 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?