首页 > 解决方案 > 您如何阅读 Fortran 中文件的最后两行以外的所有内容?

问题描述

我有大量要阅读的输入文件。它们包含不同数量的总行。我想阅读每个文件中最后两行的所有行。我该怎么做呢?是先计算每个文件中的行数然后读取所需行数的唯一方法吗?或者有什么比下面这样的更有效的东西吗?

   DO I = 1,1000

      OPEN(UNIT=I,FILE=FILENAME,STATUS='UNKNOWN',ACTION='READ')

      DO
         READ(I,*,IOSTAT=IO)
         IF (IO/=0) EXIT
         nlines(I) = nlines(I) + 1
      END DO

      REWIND(I)

      DO J = 1,nlines(I)-2
         READ(I,*) A(J)
      END DO

   END DO

标签: fortran

解决方案


为什么不直接忽略最后两行(即在读取完成后将 nlines(i) 减 2)?IE:

 DO I = 1,1000

  OPEN(UNIT=I,FILE=FILENAME,STATUS='UNKNOWN',ACTION='READ')

  DO J=1, size(A)
     READ(I,*,IOSTAT=IO) A(J)
     IF (IO/=0) EXIT
  END DO
  nlines(I) = J-3   ! 3 not 2 because J is already incremented 

END DO

推荐阅读