我试图从文件 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