我有一個輸入數據文件存儲兩列(第一列包含變量的名稱和第二列包含它們的值)。我試圖通過我的FORTRAN腳本讀取這個輸入文件,並在屏幕上打印我剛剛創建的變量。分配矩陣和輸入文件
下面是輸入文件,腳本,以及在執行所述終端上顯示所述終端輸出:
輸入文件:
a 7 2 4
b 150
vec1 1 2 3
vec2 4 5 6
c 56
腳本
program main
implicit none
character(16) :: cinput
integer :: a0,a1,a2,b0,c0,i,j
integer,dimension(:,:),allocatable :: gfd
open(9, file='inputdata.dat')
read(9,*) cinput,a0,a1,a2
read(9,*) cinput,b0
allocate(gfd(3,2))
read(9,*) cinput,gfd(:,1)
read(9,*) cinput,gfd(:,2)
read(9,*) cinput,c0
close(9)
write(*,*) 'a0=', a0,'a1=', a1,'a2=', a2,'b0=', b0,'c0=', c0
do j=1,2
do i=1,3
write(*,*) gfd(i,j)
enddo
enddo
end program main
終端輸出
a0 = 7, a1 = 2, a2 = 4, b0 = 150, c0 = 56
1
2
3
4
5
6
現在,這是很好的,但會有指定的值給變量「GFD」,而無需指定「分配」的數組的大小的方法嗎?然後,我可以使用更長/更小的數組修改輸入文件,而不必在分配變量「gfd」時修改腳本。
謝謝你的支持,如果你能幫助我! ms518
編輯:謝謝您的回答,這個過程是工作,現在可以無需修改FORTRAN腳本輸入文件的各種數組大小的工作。以下是輸入文件,腳本和獲得結果的修改。
輸入文件:
size 5 2
a 7 2 4
b 150
vec1 1 2 3 4 5
vec2 6 7 8 9 10
c 56
腳本
program main
implicit none
character(16) :: cinput
integer :: a0,a1,a2,b0,c0,i,j, rows, cols
integer,dimension(:,:),allocatable :: gfd
open(9, file='inputdata.dat')
read(9,*) cinput,rows,cols
read(9,*) cinput,a0,a1,a2
read(9,*) cinput,b0
allocate(gfd(rows,cols))
read(9,*) cinput,gfd(:,1)
read(9,*) cinput,gfd(:,2)
read(9,*) cinput,c0
close(9)
write(*,*) 'a0=', a0,'a1=', a1,'a2=', a2,'b0=', b0,'c0=', c0
do j=1,cols
do i=1,rows
write(*,*) gfd(i,j)
enddo
enddo
end program main
輸出在終端
a0 = 7, a1 = 2, a2 = 4, b0 = 150, c0 = 56
1
2
3
4
5
6
7
8
9
10
你的新問題很好。一個井意味着警告。我建議編輯第一個問題,而不是刪除它並提出一個新問題,因爲如果您有太多被刪除的問題或答案,系統可能會自動禁止您。但你不應該接近它,只是要小心。編輯和重新開放通常會更好。 –
好的弗拉基米爾,謝謝你的擡頭。我認爲刪除前一個問題並提出一個新問題會更清楚。我現在知道下一次的一切 – ms518