Fortran: reading a row of numbers into an array

后端 未结 1 531
伪装坚强ぢ
伪装坚强ぢ 2020-12-21 23:26

I have an input file with one line formatted like so: 10110100000001011 And I would like to read each digit into an array element using a loop. But if I format it with

1条回答
  •  生来不讨喜
    2020-12-22 00:09

    The format 1I1 instructs Fortran to read a single integer from the record/line and then proceed to the next record/line (I mean if that's all that the format contains). If you want to read, e.g., 10 single-digit integers on a single line, then use the format 10I1.

    Fortran 2008 adds "unlimited format item" so that you don't have to know the number of items when you write the format: *(i1).

    Code example of both methods:

    program tst
    
       integer :: array1 (10), array2 (10)
    
       open (unit=20, file="digits.txt", access="sequential", form="formatted")
    
       read (20, '(10i1)' )  array1
       write (*, *) array1
    
       rewind (20)
       read (20, '( *(i1) )' ) array2
       write (*, *) array2
    
    end program tst
    

    0 讨论(0)
提交回复
热议问题