我是Fortran的新手,我需要編寫一個代碼,允許我讀取包含數據數組的文本文件(.dat)(1876列x 3126行)不規則空格/不規則地分隔,並將其寫入一個格式一致的新文件。總之,我只想讓數據的列彼此對齊。Fortran:讀取字符串中帶有不規則分隔項的文本文件
例:
<4 spaces> 0.2341 15.0769 <2 spaces> -10.0672 1.6278 <3 spaces> 66.9851 -14.7123 <3 spaces> -0.4468 -2.5673
上面的例子是基本上數據的列應看起來像的空間相應的數字什麼每個值之前所指示的。值的格式是'f10.4'
這是我試着寫的代碼。我能夠編譯代碼並運行exe文件,但是它無法從文本文件中讀取併產生運行時錯誤:文件結束。
program refgrid
implicit none
integer :: nrow, ncol
integer :: i, j
real, dimension(:,:), allocatable :: mat
print *, ' Input number of rows: '
read *, nrow
print *, 'Input number of columns: '
read *, ncol
allocate(mat(1:ncol,1:nrow))
open(UNIT=1, FILE='bathymetry2.dat', FORM='FORMATTED', STATUS='OLD', ACTION='READ')
do i=1, nrow
read(UNIT=1, FMT=*) mat
end do
close(UNIT=1)
open(UNIT=1, FILE='refgrid.dat', FORM='FORMATTED', STATUS='NEW', ACTION='WRITE')
do i=1, nrow
write(UNIT=1, FMT=101) mat
101 format(1826f10.4)
enddo
close(UNIT=1)
end program refgrid
我的問題:
如何從使用do循環線連續讀取的值? 我在'do' 循環中使用f格式的重複功能有點困惑。
我可以作爲一個整體數組讀取/寫入數組「mat」嗎?或者如何將 data_list分配爲讀/寫?我可以分配整個矩陣而不是單個元素嗎?
我將不勝感激在這個問題上的任何幫助。謝謝!
謝謝先生。得到它的工作。這真的非常簡單! 儘管對於寫作部分,我確實得到了要點,但我很迷茫>(A,I0,A) – user2195279 2013-03-22 03:45:53
不客氣,我更新了一些額外的解釋我的帖子。 – 2013-03-22 06:32:57