有一个文件有1000帧.每个帧包含不同数量的行.每行有两列整数.但是,我不知道每帧包含多少行.每个帧由一个空行分隔.我想读取这些值并将它们存储在一个数组中.但是,我无法分配数组大小,因为我不知道每帧有多少行.所以,我有两个问题:
1 2
2 1
3 2
2 8
4 5
4 17
2 10
Run Code Online (Sandbox Code Playgroud)
等等...
有什么建议?
最简单的方法就是这样(如果需要,可以反转行和列的索引顺序,并为我跳过的所有变量添加声明以保持简短).它首先读取文件并确定行数.然后它将文件重新开始从头开始并读取已知的行数.
integer,allocatable :: a(:,:)
integer :: pair(2)
integer :: unit
unit = 11
open(unit,file="test.txt")
n = 0
do
read(unit,*,iostat=io) pair
if (io/=0) exit
n = n + 1
end do
rewind(unit)
allocate(a(n,2))
do i=1,n
read(unit,*) a(i,:)
end do
close(unit)
print *, a
end
Run Code Online (Sandbox Code Playgroud)
也可以使用临时数组完成一次通过解决方案,您可以轻松地扩展数组(C++向量在幕后也是如此).你甚至可以实现自己的成长课程,但这超出了这个问题的范围.
归档时间: |
|
查看次数: |
5879 次 |
最近记录: |