How can I read the number of lines in Fortran 90 from a text file?

17,659

Solution 1

Use:

nlines = 0
OPEN (1, file = 'file.txt')
DO
    READ (1,*, END=10)
    nlines = nlines + 1
END DO
10 CLOSE (1)

print*, nlines

end

Or:

nlines = 0
OPEN (1, file = 'file.txt')
DO
  READ(1,*,iostat=io)
  IF (io/=0) EXIT
  nlines = nlines + 1
END DO
CLOSE (1)

print*, nlines

Solution 2

Although it is unclear, I think if you just have to know the number lines in the files, just use wc -l <filename> on the command line.

If you want to do anything further, just read the number of lines in a character string and count until the end of file is encountered. Here is the code below:

character :: inputline*200

OPEN(lin, file=inputfile, status='old', action='read', position='rewind')

loop1: DO
   READ(lin,*,iostat=eastat) inputline
   IF (eastat < 0) THEN
    numvalues = numvalues + 1
WRITE(*,*) trim(inputfile), ' :number of records =', numvalues-1
EXIT loop1

ELSE IF (eastat > 0) THEN
    STOP 'IO-error'
ENDIF
    numvalues = numvalues + 1

END DO loop1
Share:
17,659

Related videos on Youtube

Adi
Author by

Adi

Updated on September 15, 2022

Comments

  • Adi
    Adi over 1 year

    How can I read the number of lines present in a text file?

    My text file seems to be like:

    1
    2
    3
    .
    .
    .
    n
    
  • francescalus
    francescalus almost 9 years
    With the Fortran approach you don't even need to actually transfer anything.
  • jsta
    jsta about 6 years
    You may need to declare io as an integer.