代码:
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
答案 0 :(得分:1)
请勿使用1
作为单元号 - 请尝试1234
之类的内容。较低的单位编号保留用于“{1}},STDOUT
,STDERR
等”特殊单位“。
另请参阅此帖子:segmentation error in linux for ansys
要检查您是否尝试阅读文件末尾或列数错误,可以将STDIN
放入iostat=ierror
语句,以检查读取时是否发生错误。{ {1}}对应于“文件结尾”,而read
表示ierror<0
期间发生错误。
如果您为矩阵值指定的内容对应于文件ierror>0
,那么您不会读取第一个(整数)值read
。
这只是为了说明而应该有效:
matrix.dat
答案 1 :(得分:0)
Fortran中的读命令将文件中的活动点移动到下一行,以便下一个读命令可以读取下一行。我最好的猜测是,对“read”的最后一次调用是寻找一个endline字符,试图继续下一行,但是运行到文件的末尾。查看在输入文件末尾添加硬回车是否可以解决问题。 (我知道一些老编辑抱怨如果文件末尾没有空行,我认为这就是原因。)