我写的是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
第一行是文字和数字的组合。
答案 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覆盖它。