【发布时间】:2017-02-24 19:17:19
【问题描述】:
我想从一个 txt 文件中读取和存储科学格式的数字,该文件已格式化并且数字由制表符分隔。
这是我目前所拥有的:
IMPLICIT NONE
REAL,ALLOCATABLE,DIMENSION(2) :: data(:,:)
INTEGER :: row,column
INTEGER :: j,i
CHARACTER(len=30) :: filename
CHARACTER(len=30) :: format
filename='data.txt'
open(86,file=filename,err=10)
write(*,*)'open data file'
read(86, *) row
read(86, *) column
allocate(data(row,column))
format='(ES14.7)'
do i=1,row
read(86,format) data(i,:)
enddo
close(86)
这是txt文件的样子:
200
35
2.9900E-35 2.8000E-35 2.6300E-35 2.4600E-35 2.3100E-35 2.1600E-35 ...
问题在于它没有从 txt 读取正确的值并将其存储到数据变量中。是格式问题吗?
我也想知道在这种情况下如何计算列数。 (我可以在 for 循环中使用 read(86,*) 来计算行数。)
【问题讨论】:
-
This recent question 可能很有趣,因为格式转换可能很重要:您的格式从记录/行中请求单个值。如果不是,您能否准确解释您看到的意外行为?
-
似乎您确实知道
(35)的列数。澄清你为什么要计算列数? -
我知道这个特定文件的列数,但我想处理可能数十或数百个这样的数据文件。关键是不要检查每个并手动设置。
-
您是否尝试过
double precision或real(8)而不是real? -
现在你明白为什么把两个问题放在一篇文章中是不好的了。你会得到答案只回答一个部分。每个帖子总是问一个问题。一个人应该如何接受一个我不知道的人。
标签: text fortran multiple-columns scientific-notation