Skip a line from text file in Fortran90

给你一囗甜甜゛ 提交于 2019-11-28 03:38:57

问题


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.


回答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.




回答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




回答3:


open (18, file='m3dv.dat')
open (19, file='m3dv2.dat')
read(18,*) x // <---

do
  read(18,*) x
  tmp = sqrt(x**2 + 1)
  write(19, *) tmp
end do

The line added just reads the first line and then overwrites it with the seconde on the first iteration.



来源:https://stackoverflow.com/questions/5611677/skip-a-line-from-text-file-in-fortran90

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!