Fortran90读取文件遇Severe 59错误求助:343行4列文件读取失败
Fortran读取文件Severe 59错误的解决方法
问题根源
Severe 59是输入格式/类型不匹配错误。你的文件每行第一个元素是字符串Ar,但代码直接尝试把这部分读进实数数组,类型不匹配触发报错;同时数组a定义为(343,4),但代码只处理第2-4列,未处理第一列的逻辑也会导致读取流程混乱。
修正后的代码
PROGRAM force implicit none integer :: i character(len=2) :: elem ! 接收每行开头的"Ar"字符串 real, dimension(343,4) :: a ! 用10及以上的单位号,避开系统预留的标准输入(5)、输出(6)等单位 open(unit=10, file='parameters.txt', status='old', action='read') do i = 1,343 ! 先读取字符串,再读取后面三个实数存入数组第2-4列 read(10,*) elem, (a(i,j), j=2,4) end do close(10) END PROGRAM force
额外优化方案
如果不需要第一列的Ar,也可以直接用格式语句跳过该字段,更贴合你的文件格式:
PROGRAM force implicit none integer :: i real, dimension(343,4) :: a open(unit=10, file='parameters.txt', status='old', action='read') do i = 1,343 ! A跳过开头字符串,3F20.14匹配文件中三个宽度为20、小数位14的实数 read(10, '(A, 3F20.14)') (a(i,j), j=2,4) end do close(10) END PROGRAM force
排查注意事项
如果仍报错,检查这两点:
- 确认
parameters.txt在程序运行的当前目录下,路径无误 - 确认文件恰好343行,无空行、格式错乱的行
内容的提问来源于stack exchange,提问作者Cate Martin
相关产品推荐
相关产品推荐

