我有一个数据文件,其中以这种方式填充数据
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
.
.
.
.
.
91 92 93 94 95 96 97 98 99 100
Run Code Online (Sandbox Code Playgroud)
我想将这些数据存储在(10,10)的矩阵中,这是我的程序
program test
integer j,n,m
character,dimension(10,10) ::text
character*50 line
open(unit=3,file="tmp.txt",status='old')
n=1
read(3,"(a50)"),line
read(line,*,end=1),(text(1,i),i=1,10)
1 read(3,"(a50)",end=3),line
n=n+1
read(line,*,end=1)(text(n,i),i=i,10)
3 close(3)
end program test
Run Code Online (Sandbox Code Playgroud)
但我没有得到正确的价值观.
假设您对将数字存储为整数感到满意,最简单的方法是这样做:
PROGRAM read_data
integer :: i
integer :: numbers(39,39)
character(10) :: infile = "data.dat"
character(10) :: outfile = "output.dat"
open(1,file=infile)
open(2,file=outfile)
do i=1,39
read(1,*) numbers(i,1:39)
end do
!write output to check
do i=1,39
write(2,'(39I5)') numbers(i,1:39)
end do
close(1)
close(2)
END PROGRAM
Run Code Online (Sandbox Code Playgroud)
我不建议使用字符串来存储任何类型的变量,因为Fortran不太善于字符串处理.如果您在某些时候需要将数据用作字符串,请将其写入字符串变量,就像写入文件一样:
write(my_string,'(I5)') numbers(1,1)
Run Code Online (Sandbox Code Playgroud)
编辑:更改代码以读取39x39大小的数组而不是10x10.
归档时间: |
|
查看次数: |
1330 次 |
最近记录: |