【发布时间】:2015-07-24 15:42:54
【问题描述】:
我收到来自输入文件的格式错误,我想确定输入文件中出现格式错误的位置。
我的问题是:有没有办法打印我的 fortran 代码中出现错误的输入文件的行号?
这是我得到的错误:
fmt: read unexpected character
apparent state: unit 4 named input_file
last format: (6(I3,X,F7.2,X,I2,X))
lately reading sequential formatted external IO
这意味着代码挂在我的输入文件中与上述格式不对应的某行。
这是我的代码中 Fortran 在输入文件中读取的部分:
DO 20 K = 1,NUMB
READ(4,200) (NSTN(J),TT(J),IKPS(J),J=1,6)
DO 30 J = 1,6
L = L+1
ISTO(L,N) = NSTN(J)
SECT(L,N) = TT(J)
KWV(L,N) = IKPS(J)
30 CONTINUE
20 CONTINUE
KOBS(N) = NSTM
10 CONTINUE
100 FORMAT(5(I2,X),F6.2,X,F5.2,X,F7.3,X,F6.3,X,F8.3,X,F6.3,
& X,F6.2,X,F5.2,X,I3,X,F4.1,X,F5.2,X,F7.3)
200 FORMAT(6(I3,X,F7.2,X,I2,X))
RETURN
END
我想在上面的代码中添加一行来标识代码正在读取的当前行,这样当它挂断时,我就会知道哪一行包含错误。感谢您的帮助。
这是我尝试过的,但它给了我另一个错误:
c READ(4,200) (NSTN(J),TT(J),IKPS(J),J=1,6)
READ(4,200)line
READ(line,*,iostat=ios) (NSTN(J),TT(J),IKPS(J),J=1,6)
IF(ios>0)THEN
WRITE(*,*)'Error Reading Line',line
STOP
ENDIF
INTEGER ios
CHARACTER*(200)line
【问题讨论】:
-
适应stackoverflow.com/a/24315813,作为一种方法。
-
我在尝试调整该答案/建议时遇到了一些麻烦。您介意建议从其他帖子中调整该建议的最佳方法吗?谢谢。
-
本质上:对于每个
read使用iostat=iostat整数iostat并找出iostat.ne.0的时间。 -
我在上面添加了编辑,但我仍然遇到错误。关于我在哪里搞砸“适应”的任何想法?谢谢。
-
您需要将声明(放在底部)放在顶部。
标签: fortran