1

我有一个输入文件,其中一行格式如下: 10110100000001011 我想使用循环将每个数字读入数组元素。但是如果我用 Read (1, "1i1") num(j) 格式化它, j =1,10 它只读取第一个整数。我究竟做错了什么?

4

1 回答 1

4

该格式1I1指示 Fortran 从记录/行中读取一个整数,然后继续到下一个记录/行(我的意思是,如果这就是格式所包含的全部内容)。例如,如果您想在一行上读取 10 个个位整数,则使用格式10I1.

Fortran 2008 增加了“无限格式项”,这样您在编写格式时不必知道项数:*(i1).

两种方法的代码示例:

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
于 2013-02-20T20:34:56.697 回答