fortran怎样读写一个txt文档

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了fortran怎样读写一个txt文档相关的知识,希望对你有一定的参考价值。

初始建立空文档txt,当读取为空时,写入数值Value,如果不为空(也就是里面有数值a且不为零),那么Value=a+Value,将Value值写入txt。 大神给写个小程序白

参考技术A REAL;;A(11,3), B(3)=0
OPEN(11,FILE='AA.TXT')
DO I=1,11
READ(11,*) A(I,1:3)
B=B+A(I,1:3)
ENDDO
CLOSE(11)
OPEN(12,FILE='BB.TXT')
WRITE(12,*) B
CLOSE(12)
! ......
END
满意请采纳。追问

能否带点接受。。。语句后边的注释。。多谢

从 txt (Fortran) 中错误读取变量

【中文标题】从 txt (Fortran) 中错误读取变量【英文标题】:Incorrect reading of a variable from a txt (Fortran) 【发布时间】:2021-03-29 13:34:12 【问题描述】:

我正在尝试阅读此 txt:

Fecha   dia mes ano hora    min 

03/06/2016 00:00    3   6   2016    0   0   
03/06/2016 00:05    3   6   2016    0   5   
03/06/2016 00:10    3   6   2016    0   10  
03/06/2016 00:15    3   6   2016    0   15  
03/06/2016 00:20    3   6   2016    0   20  
03/06/2016 00:25    3   6   2016    0   25  
03/06/2016 00:30    3   6   2016    0   30  
03/06/2016 00:35    3   6   2016    0   35  
03/06/2016 00:40    3   6   2016    0   40  
03/06/2016 00:45    3   6   2016    0   45  
03/06/2016 00:50    3   6   2016    0   50  
03/06/2016 00:55    3   6   2016    0   55  
03/06/2016 01:00    3   6   2016    1   0

使用以下代码:

    program fecha
    implicit none
    integer, dimension(13):: dia, mes, ano, hora, minuto

    character*50 :: formato = '(11x,5x,1x,i1,1x,i1,1x,i4,1x,i1,1x,i2)'

    open (unit = 10, file = 'datos.txt')
    read(10,*)
    read(unit = 10, fmt = formato) dia, mes, ano, hora, minuto

    write(*,*) dia

    close(10)

    end program

为什么这段代码以这种方式读取“dia”:

 3           6        2016           0           0           3           6        2016           0           5           3           6        2016

(我知道它的阅读方式,但不知道为什么)

【问题讨论】:

【参考方案1】:

您需要在开头跳过两行并逐行读取值。

下面的例子是对你的程序稍加修改,运行流畅。

program fecha
  implicit none

  integer               :: i, iounit
  integer, parameter    :: n = 13
  integer, dimension(n) :: dia, mes, ano, hora, minuto

  open (newunit = iounit, file = 'datos.txt')
  read (iounit, *)
  read (iounit, *)

  do i = 1, n
    read (unit = iounit, fmt = '(16x, i5, i4, i7, 2i5)') dia(i), mes(i), ano(i), hora(i), minuto(i)
    print *, dia(i), mes(i), ano(i), hora(i), minuto(i)
  end do

  close (iounit)
end program

我的输出是

$ gfortran -g3 -Wall -fcheck=all a.f90 && ./a.out
           3           6        2016           0           0
           3           6        2016           0           5
           3           6        2016           0          10
           3           6        2016           0          15
           3           6        2016           0          20
           3           6        2016           0          25
           3           6        2016           0          30
           3           6        2016           0          35
           3           6        2016           0          40
           3           6        2016           0          45
           3           6        2016           0          50
           3           6        2016           0          55
           3           6        2016           1           0

【讨论】:

非常感谢您的详细回复,这将非常有帮助。

以上是关于fortran怎样读写一个txt文档的主要内容,如果未能解决你的问题,请参考以下文章

怎样将多个txt文档快速合并成一个文档?

怎样用优化大师在右键新建中增加txt文档

怎样新建一个txt格式的文档

qt的qfile中怎样添加内容到txt文档中?

怎样将word文档格式的文件转换为txt格式的?求解答

多文档读写