首页 > 解决方案 > 有没有办法在 fortran 中读取文件的一部分?

问题描述

我想根据出现的内容读取数据文件的一部分。例如,在下面的示例文件中,我想通读文件,只要一行上有“OW”,代码就必须转到下一行并将三个数字存储在一个数组中。我该如何实施?

amber                                                                           
         0         2        18
timestep       100        18         0         2    0.001000
   25.20       0.000       0.000    
   0.000       25.20       0.000    
   0.000       0.000       25.20    
OW               1   15.999400   -0.847600
 -8.3620E+00  1.0724E+01  7.9568E+00
HW               2    1.007900    0.423800
 -7.8947E+00  1.0963E+01  8.7573E+00

标签: fortran

解决方案


这只是我在评论中提出的“您可以将文件逐行读取为字符串,然后根据字符串的内容进行操作”的草图。

logical :: read_numbers
character(255) :: line

read_numbers = .false.

do

  read(unit,'(a)') line

  if (read_numbers) then
    read(line,*) array
    read_numbers = .false.
  end if

  read_numbers = (line(1:2)=='OW')

end do

read_numbers遇到“OW”时会设置为真。然后它将在下一次传递中读取数字。根据需要添加任何错误处理。


推荐阅读