2017-07-25 38 views
1

fortran-95中datetime子例程的文檔給出了數據和時間使用的示例。下面的代碼:打印語句中的引號內的字符

program test_time_and_date 
    character(8) :: date 
    character(10) :: time 
    character(5) :: zone 
    integer,dimension(8) :: values 
    ! using keyword arguments 
    call date_and_time(date,time,zone,values) 
    call date_and_time(DATE=date,ZONE=zone) 
    call date_and_time(TIME=time) 
    call date_and_time(VALUES=values) 
    print '(a,2x,a,2x,a)', date, time, zone 
    print '(8i5)', values 
end program test_time_and_date 

在上面的代碼中有哪些單引號裏面的人物,例如'(a,2x,a,2x,a, 8i5)',在打印報表?

+0

我部分傾向於將此稱爲[此問題](https://stackoverflow.com/q/34436125)的副本,因爲那裏的答案不僅僅是字面上標題的「*」。無論哪種方式,字符串都是用於輸出的_format_。我認爲給出一個不那麼簡短的答案並不簡單,但不要過於詳細。 – francescalus

+0

答案是一樣的,但問題是完全不同的。描述符可能存在另一個重複。或者讓我們給出一個簡短的通用答案,指出leterature? –

回答

1

輸出語句採用格式說明符,它控制顯示的項目的外觀。輸入語句也使用格式來控制輸入的解釋。

print版本的輸出(與write比較)格式說明符是(未加引號)逗號前的部分。在所有形式的I/O格式可以通過以下三種方式之一指定:使用

  • 一個*(所謂列表定向 I/O);
  • 使用format語句的標籤;
  • 使用字符表達式(變量或常量)。

問題的形式是第三個。

格式規範的字符表達式由多個部分組成。這裏的引號只是字符串的分隔符。

首先是強制性的一對括號,導致最短格式規格'()'(不打印任何內容)。

接着,是其可以是格式項目:

  • 字符文字常量;
  • 編輯描述符;
  • 控制描述符;
  • 其他格式項目的集合。

格式化項目可能有一個重複計數在他們之前。

要回答問題,我會考慮引用的格式規範的編輯和控制描述符。其他描述符的更廣泛的細節(以及關於這些描述符的更多細節)和格式可以在新獲得的關於搜索條件的知識中找到。

這裏有兩個編輯描述符:ai。有一個控制描述符x

a指定輸出字符串和i整數。 i5表示輸出的寬度爲5(如果整數的輸出少於5位,填充空白); a導致輸出字符表達式的長度變長。

控件描述符x插入一個空白。2x是重複計數2的空白:給出兩個空格輸出。

因此:第一行輸出三個空格之間的空格(這裏變量的尾隨空格也會出現)。第二個打印數組的八個整數元素,其中每個字段的寬度爲五。

每個print聲明也給出了一個換行符。

+0

我心裏想的東西很短,但爲什麼不呢,如果你有熱情:) –