2017-08-31 170 views
1

如何在不換行的情況下打印多個值?無新行打印值

PRINT *, "foo:", foo, ", bar:", bar, ", baz:", baz 

顯然,這是可能的WRITEherethere)。在打印多個值時如何與PRINT及其不同的語法實現相同?

+0

您是否在使用'print'時詢問如何指定明確的格式? – francescalus

+2

打印基本上是一個少量定製的寫入版本。你爲什麼試圖這樣做? – Ross

+1

只要使用寫,打印只是爲了簡單的東西。 –

回答

3

write聲明提供了一個可選的advance說明符,但print沒有。

多個write陳述advance="no"可以在您的代碼中的不同位置進行,以便將多個項目打印到同一行。只是作爲一個例子,用它從do循環中:

do i=1,3 
    write(*, fmt="(1x,a,i0)", advance="no") "loop #", i 
end do 
write(*,*) ! Assumes default "advance='yes'". 
write(*,*) "--OK, the loop is done!" 

! Example output: 
loop #1 loop #2 loop #3 
--OK, the loop is done! 

注意advance不能用列表式輸出使用(使用「*」到「打印任何東西, 「)。因此,我展示了一個示例格式說明符fmt="(1x,a,i0)",它將爲每個寫入語句打印單個空白字符,一個字符串和一個整數。語言參考和/或您的編譯器文檔派上用場。例如參見here

正如其他人所建議的,如果這是所需的行爲,最好使用write。如果出於某種原因,您仍然傾向於使用print,那麼在打印輸出項之前,您應該將輸出項組合成單個變量或變量列表。

+0

以下內容可用於瞭解有關格式描述符的更多信息:http://www.chem.ox.ac.uk/fortran/format.html,儘管我沒有找到任何顯示矩陣但沒有像'PRINT'這樣的循環提供。 – Codoscope

+0

@ Qu'est-cet'yont嗯,我不確定你的意思。你能舉一個例子,說明'print'可以做什麼,'write'不會,可能在你的原始文章中? –