从Fortran中的特定行号开始读取

时间:2013-05-16 11:48:16

标签: fortran

我有一个包含1000个数字的文件,如:

0000
0032
1201
:  :
:  :
:  :
2324

根据输入参数“n”,我想从行号“n”到“n + m-1”读取此文件中的“m”个数字。

任何想法我怎么能在Fortran中做到这一点?

2 个答案:

答案 0 :(得分:3)

我不知道你是否自己尝试过,但这是一个很小的例子: 比如,您的输入文件如下所示:

0000
0032
1201
1234
4567
7890
2324

使用此代码(阅读后)

Program jhp
Implicit None
integer :: i
integer, parameter :: &
     m=7, &    !total number of line
     n=4, &    !line to skip
     p=3      !lines to read
integer,dimension(m)::arr   !file to read

open(12,file='file_so',status='old')
do i=1,n
  read(12,*)arr(i)
end do
do i=1,p
  read(12,*)arr(i)
  write(*,*)arr(i)
end do
End Program jhp

跳过前n行,然后读取p行。 希望有所帮助

答案 1 :(得分:1)

可能是,

open (unit, file ...)
do i=1,n
 read(unit,*) crap
end do

do i =n,n+m-1
 read(unit,*) whatever
end do
close(unit)

正是您要找的。这是未经编号的,但可能会给你一个机会。

编辑:直接访问对于此类工作更好: 刚刚意识到,虽然这是最简单的,但不是首选。 您可以在直接访问模式下打开文件并完成以下工作:

OPEN( unit, file, ACCESS='DIRECT', RECL=100, FORM='FORMATTED')

READ( unit, *, REC=n, ERR=10 ) x