我需要在Fortran 90中将一些数据写入文件 . 我应该如何使用 WRITE (*,*) input
将值分组在 columns 中? WRITE
总是在每次调用后放一个 new line
,这就是问题所在 .
代码示例:
open (unit = 4, file = 'generated_trajectories1.dat', form='formatted')
do time_nr=0, N
write (4,*) dble(time_nr)*dt, initial_traj(time_nr)
end do
现在重点是将它写在不同的列中 .
4 回答
您可以使用隐含的DO循环将值写为单个记录 . 比较以下两个例子:
它产生:
使用隐含的DO循环,它可以重写为:
这个产生:
如果在编译时未修复元素数,则可以使用
<n>
扩展(gfortran
不支持):它从变量
n
的值中获取(2I4)
编辑描述符的重复次数 . 在GNU Fortran中,您可以首先使用内部文件创建适当的编辑描述符:当然,它也适用于列表定向输出(输出格式为
*
):这实际上取决于您尝试写入文件的数据(即,您是否在循环或数组中有标量...) . 你能在问题中加入对此的描述吗?
如果你试图多次向同一行写一个标量,那么尝试使用非前进的I / O,将关键字参数
advance="no"
传递给write语句,例如:但是,请注意non-advancing I/O的惊喜 .
答案取决于你回答克里斯的问题 . 如果你想要一行,那么你将不得不使用Chris所描述的非推进IO . 如果没有这个,使用多个格式化的write语句,您将始终获得多行 .
此外,您可能需要使用格式化IO而不是list-directed(*)IO . 对于列表导向的IO,规则是松散的 . 不同的编译器可能产生不同的输出 . 对于许多输出项,换行可能会使输出线保持太长时间 .
这里的格式应该适用于所有变量都是实数的:
好旧的$ edit描述符怎么样:
记得在你的循环之后做一个写(,)...