2016-10-04 52 views
0

我有一個Fortran 77的這樣的代碼,或多或少:更新矩陣到一個文本文件,而無需將結果追加

nMaxRow=100 
nMaxStep=100 
! initialization of the matrix if Step=1 
do step=1,nMaxStep 

    if (step.eq.1) then 
     do ii=1,nMaxRow 
     do jj=1,nMaxStep 
      A(ii,jj)=0 
     end do 
     end do 
    end if 


!now for each step and for each row update the cell of the matrix 
    do ii=1,nMaxRow 
     A(ii,step)=X(ii) !X(ii) is a number associated with the specific ow at that specific step 
    end do 

!Now I want to write the updated matrix at this step into a text file, 
!How can I do that???? 

end do !close the do step... 

是否有可能更新矩陣的值,並在寫更新的矩陣該文本文件的具體步驟?我的意思是,不附加結果的每一步......

我發現對於Fortran 90的的「替換」命令存在......但我無法找到任何類似的Fortran 77中

一個簡單想法會在寫一個新文件之前刪除文件...但我不喜歡它,我不知道怎麼做。

+0

你使用的編譯器不支持'STATUS ='REPLACE''?在任何情況下,如果你打開'STATUS ='UNKNOWN'' – agentp

+0

@agentp,大多數編譯器返回到f77都會替換。我沒有在我的Fortran 77中找到狀態REPLACE,因此我認爲它確實是F90。我默默地認爲編譯器會在我的答案中重新打開替換。 –

+0

REPLACE是f90,我的觀點是他很可能沒有真正的f77編譯器。 – agentp

回答

2

如果該文件已經打開(從以前的寫作),你可以去用

rewind(unitnumber) 

文件的開始和重新開始寫作。它會刪除文件的原始內容並重新開始。如果你不想回來只是幾條記錄,你可以使用backtrace(),但你可能不希望在這裏。

如果它沒有打開,只需打開它並開始寫入。除非您打開附加內容,否則將覆蓋原始內容。

+0

它的工作原理!謝謝! –