Formatting 如何在格式化文件中写入大量列

Formatting 如何在格式化文件中写入大量列,formatting,fortran,fortran90,Formatting,Fortran,Fortran90,我正在尝试用fortran90编写一个代码,允许我创建20列(f10.6),在“输出文件”中它们之间有一个空格。 当我尝试仅使用4列创建文件时,它可以工作,但当我尝试使用5列或更多列格式化文件时,它会写入错误的结果 因此,我的四列代码如下所示: do i=1, 200 write(1,207) nq(i),plt_Dy1c4(i),plt_Dy3(i),plt_Dy4(i) 207 format(4(f10.6,x)) end do 五列的情况类似,但这不起作

我正在尝试用fortran90编写一个代码,允许我创建20列(f10.6),在“输出文件”中它们之间有一个空格。 当我尝试仅使用4列创建文件时,它可以工作,但当我尝试使用5列或更多列格式化文件时,它会写入错误的结果

因此,我的四列代码如下所示:

 do i=1, 200
     write(1,207) nq(i),plt_Dy1c4(i),plt_Dy3(i),plt_Dy4(i) 
       207   format(4(f10.6,x))
 end do
五列的情况类似,但这不起作用:

 do i=1, 200
 write(1,207) nq(i),plt_Dy1c4(i),plt_Dy3(i),plt_Dy4(i),plt_Dy5
   207   format(5(f10.6,x))
end do
五列的输出文件有8200行,而不是200行


是否有任何语句可用于创建具有多个列的文件?

什么是
plt\u Dy5
?我觉得这是一个维度为(200)的数组,就像你的另一个
plt.*
vars一样

如果是这种情况,那么对于每个
write()
语句,除了其他数组的当前索引值之外,它将写出
plt_Dy5
的全部200个值,总计204个值

由于该格式每行只允许5个值,这意味着每写语句41行。将其乘以循环的200次迭代,得到8200行


因此,只需将
plt_D5
替换为
plt_D5(i)
,就可以了。

打开文件时,可能需要将记录长度
recl
设置为某个较大的值。我需要为
ifort
open(…,recl=ground(1))
指定此项,使用环境变量(对于
ifort
):
FORT\u FMT\u recl=SOMETHINGLARGE;,也可以实现同样的效果/a、 输出
。默认值是132字节。。。对于
gfortran
变量为
gfortran\u DEFAULT\u RECL
,默认值为1GB。投票关闭,简单的印刷错误。非常感谢,这是我的错。我可能忘记了数组的索引。现在很好用。非常感谢你!!!