我正在运行Fortran代码,在Mac OSX 10.9.4上使用g77版本3.4.0进行编译。我在代码中遇到以下错误:
fmt: read unexpected character
apparent state: unit 4 named P_resids_inversion
last format: (6(I3,X,F7.2,X,I2,X))
lately reading sequential formatted external IO
我知道这个错误必须与需要(6(I3,X,F7.2,X,I2,X))格式的输入格式有关。我找到了脚本中格式化的位置,并检查了输入。上述格式对应于以下几行示例数据:
27 -0.23 1 26 -0.03 1 28 0.52 1 17 1.09 1 29 0.07 1 25 0.14 1
30 0.09 1 24 -0.13 1 4 -0.01 1 35 -0.48 1 23 -0.28 1 22 -0.08 1
21 -0.66 1 0 0.00 0 0 0.00 0 0 0.00 0 0 0.00 0 0 0.00 0
我已将此输入文件与另一个与此Fortran代码一起使用的输入文件进行了比较,没有格式问题 - 我已多次检查间距,但未发现任何差异。这是我的假设,为什么发生这种错误,即使间距是正确的:
我使用Perl脚本创建了输入文件,该脚本应用了" \ n"第6组输入(I3,F7.2,I2)完成后,换行符。可能有一个隐藏的换行符未在输入文件中删除,这使Fortran适合。但是,我在VIM中打开了两个输入文件并执行了":set list"命令,每行末尾唯一的字符是美元符号。
我想知道你是否有任何关于如何在我的输入文件中删除隐藏字符的想法,或者如果在fortran代码中有这种打嗝的任何其他原因,即使输入是正确的(在文本文件中) ?
作为旁注,我所知道的输入文件是Unix可执行文件,而故障输入文件是文本文件,故障文件是在Mac上创建的。