我有一个输入文件,其中一行格式如下: 10110100000001011 我想使用循环将每个数字读入数组元素。但如果我用它格式化它 读(1,“1i1”)num(j),j = 1,10 它只读取第一个整数。我做错了什么?
答案 0 :(得分:3)
格式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