第7行的运行时错误在哪里(从文件读取矩阵)?

时间:2013-10-17 01:14:33

标签: fortran fortran77

代码:

program a
implicit double precision (a-h,o-z)
dimension a(3,3),b(3)

open(1,file='matrix.dat')
do i=1,3
    read(1,*) b(i)(a(i,j),j=1,3)
enddo
close(1)

stop
end

错误:

At line 7 of file ea.for (unit=1, file='matrix.dat')
Fortran runtime error: End of file

矩阵a(3 * 3),b(3):

3
2.d0   -7.d0    4.d0    4.d0
1.d0    9.d0   -6.d0    4.d0
-3.d0    8.d0    5.d0    2.d0

2 个答案:

答案 0 :(得分:1)

请勿使用1作为单元号 - 请尝试1234之类的内容。较低的单位编号保留用于“{1}},STDOUTSTDERR等”特殊单位“。 另请参阅此帖子:segmentation error in linux for ansys

要检查您是否尝试阅读文件末尾或列数错误,可以将STDIN放入iostat=ierror语句,以检查读取时是否发生错误。{ {1}}对应于“文件结尾”,而read表示ierror<0期间发生错误。

如果您为矩阵值指定的内容对应于文件ierror>0,那么您不会读取第一个(整数)值read

这只是为了说明而应该有效:

matrix.dat

答案 1 :(得分:0)

Fortran中的读命令将文件中的活动点移动到下一行,以便下一个读命令可以读取下一行。我最好的猜测是,对“read”的最后一次调用是寻找一个endline字符,试图继续下一行,但是运行到文件的末尾。查看在输入文件末尾添加硬回车是否可以解决问题。 (我知道一些老编辑抱怨如果文件末尾没有空行,我认为这就是原因。)