如何在fortran中从头到尾读取.dat文件?

时间:2015-02-01 12:20:59

标签: file fortran gfortran

我是fortran的新手,我正在尝试将以下A.dat文件更改为所需的B.dat并在A.dat上覆盖它(B.dat)(即我想从底部读取A.dat的行顶部并覆盖它(例如,在这个例子中,我想用第三行(最后一行)替换第一行,反之亦然))。谁能告诉我如何在fortran 90中做到这一点?

    A.dat's contents       B.dat's contents (desired)

    111001                 1111
    110110                 110110
      1111                 111001

到目前为止,在@High Performance Mark的帮助下,我尝试了以下内容:

program test
    real, dimension(:), allocatable :: x
    Integer (kind=8) :: n
    integer(kind = 4) :: i
    open (unit=99, file='A.dat', access='sequential', form='formatted')
    open(unit=20, file='B.dat', access='sequential', form='formatted')
    do i=3,1,-1
        read(99,*) n
        write(*,*) n
        write(20, *) n
    end do
    close(20)
end program test

但我坚持用“以相反顺序编写新文件”部分“”(前面提到的程序只读取A.dat内容并将它们写入终端和B.dat文件中,顺序相同)。我该怎么做?

  

P.S。机器信息:

     
     

“Linux 3.16.6-200.fc20.x86_64(fedora 20)”

     
     

“gcc version 4.8.3 20140911(Red Hat 4.8.3-7)(GCC)”

     
     

“使用.f90”

1 个答案:

答案 0 :(得分:2)

在Fortran中执行此操作的最简单方法将说明为什么它不是您想要在Fortran中执行的操作。

program futility
    implicit none
    call execute_command_line('tac A.dat > B.dat')
end program