Fortran 90中的读取格式

4

我有一个非常大的文件需要读取,其结构如下:

 [...]
 (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:严重(64):输入转换错误


2
除了 M.S.B. 的解决方案外,您可以将整行读入字符串中,用空格替换任何 ():,然后使用列表定向 IO 从结果字符串中读取。 - Hristo Iliev
1个回答

10

由于看起来项目没有按列对齐,因此使用格式很难做到这一点。我会这样处理:

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

将每行读入字符串,定位冒号,然后使用列表指向IO来处理冒号后的字符串中的数字值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接