Как вы читаете все, кроме последних 2 строк файла в Fortran? - PullRequest
0 голосов
/ 11 мая 2018

У меня есть большое количество входных файлов, которые я хочу прочитать. Они содержат различное количество общих строк. Я хочу прочитать все строки до двух последних строк в каждом файле. Как мне это сделать? Это единственный способ подсчитать сначала количество строк в каждом файле, а затем прочитать желаемое количество строк? Или есть что-то гораздо более эффективное, чем что-то вроде следующего?

   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

1 Ответ

0 голосов
/ 12 мая 2018

Почему бы просто не проигнорировать две последние строки (т.е. просто уменьшить nlines (i) на 2 после того, как чтение завершено)?Т.е.:

 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...