【发布时间】:2014-06-11 13:13:19
【问题描述】:
代码由一个 do-loop 组成,并在运行时创建数据数组。我需要将这些数组作为新列添加到文件中。
第一列是固定的(波长),第二列是在第一次运行中生成的:
OPEN (unit=11,file=filename // '.csv')
WRITE(11,'(i4,A1,f10.6)') (lambda(ii),tab,resv(ii), ii=1,nw)
CLOSE(11)
lambda 是波长(4 位),tab 被声明为 char(9),resv 是我的数据(浮动)。该数组由nw=2000 项组成。
第一次运行脚本给了我一个很好的输出,我可以将它作为 .csv 加载到 MS Excel 中 但是,脚本是返回到循环的开头,计算新数据并将更改的“resv”项存储到新列中。
但是当我走的时候
WRITE(11,'(T17,i4,A1,f10.6)') (lambda(ii),tab,resv(ii), ii=1,nw)
新数据确实存储在第 17 列,但之前的所有数据都被删除了! 那么我怎样才能告诉 Fortran “添加”一个新列呢?
【问题讨论】:
-
您不能从程序中编辑文件。用旧数据重命名文件,读取旧文件并用新旧数据写出新文件。完成后,删除旧文件。
-
这似乎和stackoverflow.com/questions/24157423/…太相似了,请更新/完善原问题
-
肯定是相似的,同样的代码有两个问题。最后一个问题的答案甚至是到达这里所必需的。但这不是最终的解决方案。这是我的实际问题。
-
@cup:同样的问题。当我读取旧数据时,我如何告诉 fortran 它应该为此使用两个新列?
-
您根本无法写入现有文件中的新“列”。不适用于 fortran 或任何其他语言。您必须重写整个文件,或者使用占位符空白初始化文件并使用直接访问。见stackoverflow.com/questions/23834138/…
标签: fortran output multiple-columns fortran90