fortran读文本文件—数据长度不一致问题

来源:互联网 发布:淘宝网店策划案 编辑:程序博客网 时间:2024/06/07 06:19

要读取下面这样每行的数据长度不一致的文件,前两列的长度是固定的,第三列长度不一致,有的11位有的只有9位。每列之间有一个空格。

fortran读文件的函数是read,这里主要是fmt参数的设置,第2、3、4行第三列只有9位,但是第7行第三列却有12位,如果格式的宽度设置为12,那么比较短的数据行就会把第四列的数据也读进来;如果设置为9,那么比较长的数据就会读不完整,同时还会影响第四列的数据读入。

当然可以以字符串的形式读进来,按照空格拆分成浮点数,但是稍微麻烦一点。

其实read命令如果不设置fmt参数可以直接按行读入,代码如下:

program main implicit none real*8 dd(4,7) open(10,"data.txt") read(unit=10,*) dd write(*,*) dd close(10)end program
输出的结果如下:


可见数据都读进来了,输出结果会与原始数据有微小的差异,这与数据的有效数据位数及在计算机中的存储有关。

可以在write命令中设置一下输出格式:

 write(*,"(F12.6,F12.6,F12.6,F6.0)") dd

之后输出的结果就变成下面这样,看起来舒服多了。