2013-08-23 33 views
8

在Fortran中,每次使用WRITE時都會生成一個新行。爲了控制正在執行的程序的工作,我想在屏幕上寫一個變量的當前值,但始終在同一行上(擦除前一個值並從行首開始)。也就是說,像在FORTRAN的同一行上寫入

1 CONTINUE 
     "update the value of a" 
     WRITE(*,*) a 
     BACKSPACE "screen" 
     GOTO 1 

喜歡的東西WRITE(*,*,ADVANCE='NO')(反正不正確)不完全是我 需要:這會寫上一個很長的 線a此起彼伏所有的值。

+0

很確定'BACKSPACE'確實**不**做你認爲它做的事情。 –

回答

7

,我表現出你想要的東西是如下

do l=1,lmax 
    ...update a... 
    write(*,'(1a1,<type>,$)') char(13), a 
enddo 

其中<type>a您的格式說明一個手法(即i0爲整數)。

關鍵是char(13),這是回車符和格式描述符中的$。我真的不知道是否有$的名稱,我只知道它適用於在屏幕上顯示 - 對於輸出到文件,您將在每行上得到一個a

+0

注意$描述符不是標準語言。 – IanH

+0

我推測這不是標準,但它適用於ifort 11+和gfortran 4.6&4.7。 –

+0

advance = no是$的「標準」替換。此外,解決方案取決於您的終端類型,如果此答案不起作用,請告訴我們您正在運行的終端, – agentp