在 Fortran 中替换两个文件之间的行后如何输出行块

问题描述 投票:0回答:0

我试图从文件 1 输出 432 行块(每块 94 行),交换从第二个文件 2 中获取的两个特定行,该文件 2 也有 432 行块,每块 7 行。我设法使用下面的 Fortran 代码将其输出到第一行块。然而,我正在努力寻找一种方法来为文件 1 中的所有其他 431 个先前块输出相同的内容。

Fortran 代码:

implicit none

character(100) :: linha1(94), linha2(8)
integer :: i, j, k
character(100) :: arquivo1, arquivo2


arquivo1 = "pegylated_system.xyz"
arquivo2 = "car_centered_charmm.xyz"

open(unit=20, file=arquivo2, status='old')

    do k = 1, 432

  do j = 1, 7
    read(20, '(A100)') linha2(j)
  end do

    open(unit=10, file=arquivo1, status='old')

    do i = 1, (k - 1) * 94
      read(10, '(A100)')
end do

do i = 1, 94
  read(10, '(A100)') linha1(i)
      if (i == 41) then
        linha1(i) = linha2(2)
  else if (i == 42) then
    linha1(i) = linha2(3)
  end if
end do

close(10)   

open(unit=30, file="output_file.txt", status='unknown')

do i = 1, 94
  write(30, '(A)') trim(linha1(i))
    end do

close(30)

end do

close(20)

end
fortran output line block
© www.soinside.com 2019 - 2024. All rights reserved.