我正在尝试从intel ifort转移到IBM xlf,但是当读取“未格式化的输出数据”(未格式化我的意思是它们的长度不一样)时,就会出现问题。这是一个例子:
program main
implicit none
real(8) a,b
open(unit=10,file='1.txt')
read (10,*) a
read (10,*) b
write(*,'(E20.14E2)'),a,b
close(10)
end program
的1.txt:
0.10640229631236
8.5122792850319D-02
使用ifort我得到输出:
0.10640229631236E+00
0.85122792850319E-01
使用xlf我得到输出:
' in the input file. The program will recover by assuming a zero in its place.e invalid digit '
0.10640229631236E+00
0.85122792850319E-01
由于1.txt中的数据未格式化,我无法使用固定格式来读取数据。任何人都知道如何解决这个警告?
答案 0 :(得分:0)
(问题在评论中回答。见Question with no answers, but issue solved in the comments (or extended in chat))
@ M.S.B写道:
OP写道:输入文件中是否有撇号?或者除了数字,小数点和“D”之外的任何字符?您的阅读是“列表定向”。
是的,似乎在0.10640229631236之后有一些字符需要花费此警告。当我手动将这些数字写入新文件时(通过回车键更改0.10640229631236之后的行),此警告消失。我
cat -v
这两个文件:警告文件我得到0.10640229631236 ^ M 8.5122792850319D-02而我得到的无警告文件0.10640229631236 8.5122792850319D-02你知道M代表什么,它来自哪里?
@agentp给出了链接:
这说明^ M是回车的Windows字符