主题:如何用fortran来读不规则的txt文件
lxh7757
[专家分:0] 发布于 2012-01-18 13:30:00
求助各位高手:
如何用fortran来读txt?谢谢!
[email]null[/email]
回复列表 (共5个回复)
沙发
yeg001 [专家分:14390] 发布于 2012-01-18 15:30:00
先去学学fortran的read函数是如何使用格式控制来读取文件的.
板凳
臭石头雪球 [专家分:23030] 发布于 2012-01-18 16:01:00
这文件还算不规则?
依我看,这文件实在太规则了对齐得非常好,还有表头
3 楼
pasuka [专家分:670] 发布于 2012-01-19 10:29:00
要想简单方便的话,还是用matlab、excel等直接导入并处理后,再供Fortran读取
4 楼
lxh7757 [专家分:0] 发布于 2012-01-19 11:33:00
谢谢 但是我的数据量很大 用excel太麻烦了
5 楼
NMRD [专家分:40] 发布于 2012-01-19 17:21:00
[quote]这文件还算不规则?
依我看,这文件实在太规则了对齐得非常好,还有表头[/quote]
的确,给出的数据是很规则的。你要做的是找出需要提取的数据的‘类型’(几位的整数,小数,比如I4,F8.3和需要的空格)。
你还可以用dimension的方法来写,下面这个例子是读一列数据,以75*3的输出方式重新输出。
program main
character(160) :: filename,tmp
integer m1,n1
integer i,j,line,n,m
integer, dimension(75,3)::indata(75,3)
filename='A_1_'
print*, 'Please enter the number of files:'
read*,n1
do m1=1,n1
write(tmp,*)m1
open(10,status='old', file=trim(filename)//trim(adjustl(tmp))
1//'.dat')
n=75
do i = 1,n
m=3
read(10,*,iostat=ios) (indata(i,j), j=1,m)
if (ios /=0) then
exit
endif
open(11,status='unknown',file=trim('B_1_')//trim(adjustl(tmp))
1//'.dat')
write(11,111)(indata(i,j),j=1,m)
end do
close(10)
close(11)
enddo
111 format (I4,2X,I4,2X,I4)
end
我来回复