簡體   English   中英

從 txt (Fortran) 中錯誤讀取變量

[英]Incorrect reading of a variable from a txt (Fortran)

我正在嘗試閱讀此 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

(我知道它的閱讀方式,但不知道為什么)

您需要在開頭跳過兩行並逐行讀取值。

下面的例子是對你的程序的輕微修改,它可以順利運行。

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

我的 output 是

$ 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM