(FORTRAN 90)I / O读/打印

时间:2013-03-15 03:01:24

标签: fortran

我有一个包含2列的.dat文件,列中列出了值。但是,条目之间存在随机间隔。两列的长度相同(只是数据中的随机空行)。

我需要能够阅读这些内容然后再显示它们。

谢谢!任何建议/帮助 乔

我尝试过只使用OPEN但只是出现I / O错误。

PROGRAM TEST1


OPEN( 2, FILE='grades.dat', ACCESS='DIRECT', FORM='FORMATTED')

READ( 2) X, Y 


END PROGRAM TEST1

1 个答案:

答案 0 :(得分:0)

此代码逐行读取文件到字符串中。如果字符串是非空白的,对应于包含两个数字而不是空白的行,则将它们读入下一个数组元素。假设数组已被声明为足够大。这回答了你的问题了吗?更好的设计会读取文件以确定数字的数量,倒回文件,并将数组分配到正确的大小,然后将文件读入数组。

编辑:实际上,Fortran会自动跳过空行,因此解决方案可以更简单:

program read_file

use, intrinsic :: iso_fortran_env

implicit none

integer :: i, j, ReadCode
real, dimension (100) :: x, y

open (unit=2, file="grades.dat", access="sequential", form="formatted", status="old", action="read" )

i = 1
ReadLoop: do

  read (2, *, iostat=ReadCode )   x (i), y (i)

   if ( ReadCode /= 0 ) then
      if ( ReadCode == iostat_end ) then
         exit ReadLoop
      else
         write ( *, '( / "Bad read: ", I0 )' )  ReadCode
         stop
      end if
   end if

   i = i + 1

end do ReadLoop

do j=1,i-1
   write (*, *) x(j), y(j)
end do

end program read_file