我需要在 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
现在的重点是将其写在单独的列中。
最佳答案
您可以使用隐含的 DO 循环将值写入单个记录。比较以下两个例子:
integer :: i
do i=1,10
write(*,'(2I4)') i, 2*i
end do
它产生:
1 2
2 4
3 6
...
使用隐含的 DO 循环,它可以重写为:
integer :: i
write(*, '(10(2I4))') (i, 2*i, i=1,10)
这个产生:
1 2 2 4 3 6 ...
如果元素的数量在编译时不固定,您可以使用 <n>
扩展名(gfortran
不支持):
write(*, '(<n>(2I4))') (i, 2*i, i=1,n)
它需要(2I4)
的重复次数根据变量 n
的值编辑描述符.在 GNU Fortran 中,您可以首先使用内部文件创建适当的编辑描述符:
character(len=20) :: myfmt
write(myfmt, '("(",I0,"(2I4))")') n
write(*, fmt=myfmt) (i, 2*i, i=1,n)
当然,它也适用于列表定向输出(即格式为 *
的输出):
write(*, *) (i, 2*i, i=1,10)
关于file-io - 将数据按列写入文件(Fortran),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12002620/