阅读未格式化的数据,英特尔ifort与Ibm xlf

时间:2012-11-03 22:28:34

标签: formatting fortran

我正在尝试从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中的数据未格式化,我无法使用固定格式来读取数据。任何人都知道如何解决这个警告?

1 个答案:

答案 0 :(得分:0)

(问题在评论中回答。见Question with no answers, but issue solved in the comments (or extended in chat)

@ M.S.B写道:

  

输入文件中是否有撇号?或者除了数字,小数点和“D”之外的任何字符?您的阅读是“列表定向”。

OP写道:

  

是的,似乎在0.10640229631236之后有一些字符需要花费此警告。当我手动将这些数字写入新文件时(通过回车键更改0.10640229631236之后的行),此警告消失。我cat -v这两个文件:警告文件我得到0.10640229631236 ^ M 8.5122792850319D-02而我得到的无警告文件0.10640229631236 8.5122792850319D-02你知道M代表什么,它来自哪里?

@agentp给出了链接:

  

'^M' character at end of lines

这说明^ M是回车的Windows字符