回 帖 发 新 帖 刷新版面

主题:[讨论]fortran读取文件的一个问题

现在由以下的文件,存于txt格式的文件里
54
0.16666667    0.16666667    0
0    0.16666667    0.16666667
0.16666667    0.16666667    0.33333333
0    0.16666667    0.5
0.16666667    0.16666667    0.66666667
0    0.16666667    0.83333333
0.16666667    0.5    0
0    0.5    0.16666667
0.16666667    0.5    0.33333333
0    0.5    0.5
0.16666667    0.5    0.66666667
0    0.5    0.83333333
0.16666667    0.83333333    0
0    0.83333333    0.16666667
0.16666667    0.83333333    0.33333333
0    0.83333333    0.5
0.16666667    0.83333333    0.66666667
0    0.83333333    0.83333333
0.5    0.16666667    0
0.33333333    0.16666667    0.16666667
0.5    0.16666667    0.33333333
0.33333333    0.16666667    0.5
0.5    0.16666667    0.66666667
0.33333333    0.16666667    0.83333333
0.5    0.5    0
0.33333333    0.5    0.16666667
0.5    0.5    0.33333333
0.33333333    0.5    0.5
0.5    0.5    0.66666667
0.33333333    0.5    0.83333333
0.5    0.83333333    0
0.33333333    0.83333333    0.16666667
0.5    0.83333333    0.33333333
0.33333333    0.83333333    0.5
0.5    0.83333333    0.66666667
0.33333333    0.83333333    0.83333333
0.83333333    0.16666667    0
0.66666667    0.16666667    0.16666667
0.83333333    0.16666667    0.33333333
0.66666667    0.16666667    0.5
0.83333333    0.16666667    0.66666667
0.66666667    0.16666667    0.83333333
0.83333333    0.5    0
0.66666667    0.5    0.16666667
0.83333333    0.5    0.33333333
0.66666667    0.5    0.5
0.83333333    0.5    0.66666667
0.66666667    0.5    0.83333333
0.83333333    0.83333333    0
0.66666667    0.83333333    0.16666667
0.83333333    0.83333333    0.33333333
0.66666667    0.83333333    0.5
0.83333333    0.83333333    0.66666667
0.66666667    0.83333333    0.83333333
54
0    0    0
0.16666667    0    0.16666667
0    0    0.33333333
0.16666667    0    0.5
0    0    0.66666667
0.16666667    0    0.83333333
0    0.33333333    0
0.16666667    0.33333333    0.16666667
0    0.33333333    0.33333333
0.16666667    0.33333333    0.5
0    0.33333333    0.66666667
0.16666667    0.33333333    0.83333333
0    0.66666667    0
0.16666667    0.66666667    0.16666667
0    0.66666667    0.33333333
0.16666667    0.66666667    0.5
0    0.66666667    0.66666667
0.16666667    0.66666667    0.83333333
0.33333333    0    0
0.5    0    0.16666667
0.33333333    0    0.33333333
0.5    0    0.5
0.33333333    0    0.66666667
0.5    0    0.83333333
0.33333333    0.33333333    0
0.5    0.33333333    0.16666667
0.33333333    0.33333333    0.33333333
0.5    0.33333333    0.5
0.33333333    0.33333333    0.66666667
0.5    0.33333333    0.83333333
0.33333333    0.66666667    0
0.5    0.66666667    0.16666667
0.33333333    0.66666667    0.33333333
0.5    0.66666667    0.5
0.33333333    0.66666667    0.66666667
0.5    0.66666667    0.83333333
0.66666667    0    0
0.83333333    0    0.16666667
0.66666667    0    0.33333333
0.83333333    0    0.5
0.66666667    0    0.66666667
0.83333333    0    0.83333333
0.66666667    0.33333333    0
0.83333333    0.33333333    0.16666667
0.66666667    0.33333333    0.33333333
0.83333333    0.33333333    0.5
0.66666667    0.33333333    0.66666667
0.83333333    0.33333333    0.83333333
0.66666667    0.66666667    0
0.83333333    0.66666667    0.16666667
0.66666667    0.66666667    0.33333333
0.83333333    0.66666667    0.5
0.66666667    0.66666667    0.66666667
0.83333333    0.66666667    0.83333333



其中有两行只有一个数字,存于count1和count2变量中,剩下的存于一

个3*count1的数组以及3*count2的数组中。
请问用fortran90如何实现啊?
非常感谢!

回复列表 (共2个回复)

沙发

do while (.true.)
     read(unit = 20, fmt=*, iostat = status, err=1000) Val(1:3)
     goto 1001  
     1000 read(unit = 20, fmt=*, iostat = status, err=1000) Val1    
     1001 if(status /= 0) exit !没有数据跳出
end do

我是新手,没的办法,只会这种方法。期待高手解答

板凳

integer:: count1, count2
real, allocatable:: V1(:, :), V2(:, :)
open(unit = 20, file = "In.txt")
read(20, *) count1
allocate( V1(3, count1) )
do i = 1, count1, 1
     read(unit = 20, fmt=*, iostat = status, err=1000) V1(1 : 3, i)
end do
read(20, *) count2
allocate( V2(3, count2) )
do i = 1, count2, 1
     read(unit = 20, fmt=*, iostat = status, err=1000) V2(1 : 3, i)
end do
close(unit = 20)

你试试吧,我没有运行。

我来回复

您尚未登录,请登录后再回复。点此登录或注册