Skip a line from text file in Fortran90

24,514

Solution 1

You already found the solution but I just wanted to add that you don't even need a dummy variable, just a blank read statement before entering the loop is enough:

open(18, file='m3dv.dat')
read(18,*)
do
    ...

The other answers are correct but this can improve conciseness and (thus) readability of your code.

Solution 2

Perform a read operation before the do loop that reads whatever is on the first line into a "dummy" variable.

program linereadtest
implicit none
character (LEN=75) ::firstline
integer :: temp,n
    !
    !
    !
open(18,file='linereadtest.txt')
read(18,*) firstline
do n=1,4
   read(18,'(i3)') temp
   write(*,*) temp
end do
stop
end program linereadtest

Datafile:

This is a test of 1000 things that 10 of which do not exist

50
100
34
566

!ignore the space in between the line and the numbers, I can't get it to format

Share:
24,514

Related videos on Youtube

osgx
Author by

osgx

Linux programmer, interested in compilers (with theory and standard-compliance), cryptography, OS and microelectronics design Working deeply with compilers, standard-compliance and OS libraries.

Updated on April 12, 2020

Comments

  • osgx
    osgx about 4 years

    I'm writing in fortran (90). My program must read file1, do something with every line of it and write result to file2. But the problem - file1 has some unneeded information in first line.

    How can I skip a line from input file using Fortran?

    The code:

    open (18, file='m3dv.dat')
    open (19, file='m3dv2.dat')
    do
      read(18,*) x
      tmp = sqrt(x**2 + 1)
      write(19, *) tmp
    end do
    

    First line is a combination of text and numbers.

  • jonsca
    jonsca about 13 years
    I think yours assumes the information on the first line of the file is of the same type as the second line.
  • iehrlich
    iehrlich about 13 years
    @jonsca: yes, I do assume, unless other claimed.
  • osgx
    osgx about 13 years
    No, first line is not a single number, but a combination of numbers and texts
  • osgx
    osgx about 13 years
    how can I read whatever in fortran? First line have several space-separated strings and numbers.
  • jonsca
    jonsca about 13 years
    So you'd probably be better off reading the top line into a char array of appropriate length, otherwise you'll get a runtime error, I believe (assuming from line 2 on down are integers or double precision, etc.)
  • osgx
    osgx about 13 years
    yes (string number string number), but universal solution is welcome too.
  • jonsca
    jonsca about 13 years
    Make a character array (LEN=100, or whatever). I believe read should read until the end of the line.
  • iehrlich
    iehrlich about 13 years
    @osgx: the universal solution is to read chars one by one in a loop intil you encounter '\0' char. There also can be a procedure which do this, sorta GetString() in C.
  • jonsca
    jonsca about 13 years
    @suddnely_me there is no '\0' in Fortan
  • jonsca
    jonsca about 13 years
    Thanks, I hadn't realized that.
  • Simon
    Simon about 13 years
    @osgx Yes. If you want to skip 3 lines, write it three times.
  • Mohamed
    Mohamed about 2 years
    This is brilliant!

Related