从Fortran90中的文本文件中略过一行

时间:2011-04-10 12:20:02

标签: fortran fortran90

我写的是fortran(90)。我的程序必须读取file1,对它的每一行做一些事情并将结果写入file2。但问题是 - file1在第一行有一些不需要的信息。

如何使用Fortran跳过输入文件中的一行?

代码:

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

第一行是文字和数字的组合。

3 个答案:

答案 0 :(得分:12)

您已经找到了解决方案,但我只想补充一点,您甚至不需要虚拟变量,只需在进入循环之前的空白读取语句就足够了:

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

其他答案是正确的,但这可以提高您的代码的简洁性和(因此)可读性。

答案 1 :(得分:1)

在do循环之前执行读操作,将第一行中的任何内容读入“虚拟”变量。

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

数据文件:

  

这是对1000件事的测试10   其中不存在

50
100
34
566

!忽略行和数字之间的空格,我无法将其格式化

答案 2 :(得分:0)

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

添加的行只读取第一行,然后在第一次迭代时使用seconde覆盖它。