Formatting 如何在格式化文件中写入大量列
我正在尝试用fortran90编写一个代码,允许我创建20列(f10.6),在“输出文件”中它们之间有一个空格。 当我尝试仅使用4列创建文件时,它可以工作,但当我尝试使用5列或更多列格式化文件时,它会写入错误的结果 因此,我的四列代码如下所示: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 五列的情况类似,但这不起作
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。投票关闭,简单的印刷错误。非常感谢,这是我的错。我可能忘记了数组的索引。现在很好用。非常感谢你!!!