【问题标题】:Reading format in Fortran 90Fortran 90 中的读取格式
【发布时间】:2012-09-03 11:39:33
【问题描述】:

我有一个巨大的文件要读取,其结构是:

 [...]
 (0,0,0,0,0): 5.00634e-33, 5.59393e-33, 6.24691e-33, 7.29338e-33,
 (0,0,0,0,4): 7.77607e-33, 8.95879e-33, 9.65316e-33, 1.07434e-32,
 (0,0,0,0,8): 1.20824e-32, 1.34983e-32, 1.49877e-32, 1.73061e-32,
 (0,0,0,0,12): 1.919e-32, 2.15391e-32, 2.3996e-32, 2.67899e-32,
 [...]

我有兴趣读取“:”之后的值,如果我使用 Fortran90,我应该在读取语句中使用 format 吗?

我试过了

 read(1,'("(",I6,",",I6,",",I6,",",I6,",",I6,"):",F10.4,F10.4,F10.4,F10.4)')idx1,idx2,idx3,idx4,idx5,dummy1,dummy2,dummy3,dummy4

但我有一个forrtl: severe (64): input conversion error

【问题讨论】:

  • 除了M.S.B.的解决方案。您可以将整行读入一个字符串,将任何(): 替换为空格,然后使用list-directed IO 从结果字符串中读取。

标签: format fortran


【解决方案1】:

由于项目似乎没有按列排列,因此处理格式很棘手。我会这样处理:

read (55, '(A)')  string
colon_pos = index (string, ":")
read (string (colon_pos+1:len_string), * ) real1, real2, real3, real4

将每一行读入一个字符串,定位冒号,然后使用list-directed IO处理冒号后面的字符串中的数值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 2013-08-02
    • 2015-11-28
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多