鍍金池/ 教程/ Java/ Fortran基本輸入輸出
Fortran還原功能
Fortran關系運算符
Fortran運算符優(yōu)先級
Fortran基本語法
Fortran文件輸入輸出
Fortran嵌套select case結構
Fortran變量
Fortran Cycle語句
Fortran語言環(huán)境設置
Fortran數(shù)據(jù)類型
Fortran數(shù)組
Fortran字符
Fortran if...else if...else 語句
Fortran調(diào)試程序
Fortran編程風格
Fortran if...then語句結構
Fortran嵌套循環(huán)
Fortran常量
Fortran循環(huán)
Fortran導出數(shù)據(jù)類型
Fortran字符串
Fortran操作函數(shù)
Fortran do...while循環(huán)結構
Fortran內(nèi)部函數(shù)
Fortran數(shù)字精度
Fortran選擇決策
Fortran重塑函數(shù)
Fortran運算符
Fortran構造函數(shù)
Fortran模塊
Fortran位置函數(shù)
Fortran數(shù)字
Fortran指針
Fortran算術運算符
Fortran exit語句
Fortran動態(tài)數(shù)組
Fortran嵌套if結構
Fortran select case結構
Fortran向量和矩陣乘法函數(shù)
Fortran邏輯運算符
Fortran if...then...else 結構
Fortran教程
Fortran過程
Fortran Stop語句
Fortran基本輸入輸出
Fortran do循環(huán)結構
Fortran查詢函數(shù)

Fortran基本輸入輸出

到目前為止,我們已看到,我們可以使用打印print*語句,以及讀取鍵盤使用read*語句,并顯示數(shù)據(jù)輸出到屏幕上。這種形式的輸入輸出是自由格式的I/O,它被稱為列表控制的輸入輸出。

自由格式簡單I/O的形式為:

read(*,*) item1, item2, item3...
print *, item1, item2, item3
write(*,*) item1, item2, item3...

然而,格式化I/O使數(shù)據(jù)傳輸有更多的靈活性。

格式化輸入輸出

格式化輸入輸出有語法如下:

read fmt, variable_list 
print fmt, variable_list 
write fmt, variable_list 

其中,

  • fmt 是格式規(guī)范

  • variable-list 要被從鍵盤讀或?qū)懺谄聊簧系淖兞康牧斜?/p>

格式規(guī)范定義了在其上顯示格式化的數(shù)據(jù)的方式。它由一個字符串,包含了編輯描述符在括號中的列表。

編輯描述符指定的確切格式,例如寬度,其中字符和數(shù)字被顯示小數(shù)點后等,數(shù)字位數(shù)。

例如:

Print "(f6.3)", pi

下表描述了描述:

描述符 描述 示例
I 這是用于整數(shù)輸出。此采用的形式為“rIw.m',其中 r, w 和m 的含義在下面的表格中給出。真正的值在它們字段右側適應。如果字段寬度不足以容納一個整數(shù)則用星號代替。 print "(3i5)", i, j, k
F 這是用于實數(shù)輸出。此采用的形式為“rFw.d',其中r, w 和 d 的含義在下面的表格中給出。真正的值在它們字段右側適應。 如果字段寬度不足夠大以容納所述實數(shù)則字段用星號表示。 print "(f12.3)",pi
E

這是用于指數(shù)形式實時輸出。在“E”描述語句的形式為'rEw.d',其中r,w和d的含義如下表中給出。真正的值在它們字段右側適應. 如果字段寬度不足夠大以容納所述實數(shù)則字段用星號表示。

請注意,打印出與三位小數(shù),實數(shù)至少10需要一個字段寬度。一個用于尾數(shù),2為零,4為尾數(shù)部分和兩個用于指數(shù)本身的符號。在一般情況下,w≥ d +7。

print "(e10.3)",123456.0 gives ‘0.123e+06’
ES 這是用于實時輸出(科學計數(shù)法)。此采用的形式為“rESw.d',其中 r, w 和 d的含義在下面的表格中給出。上述的“E”描述從傳統(tǒng)的眾所周知的“科學表示法”略有不同。科學表示法具有尾數(shù)范圍為1.0至10.0對E描述符,它具有在范圍0.1到1.0的尾數(shù)不同。真實的值在字段的右側。如果字段寬度不足夠大以容納所述實數(shù)則字段用星號表示。這里,字段寬度必須滿足 w ≥ d +7 print "(es10.3)",123456.0 gives ‘1.235e+05’
A 這是用于字符輸出。 此采用的形式為“rAw”,其中r和w的含義在下面的表格中給出。字符類型是在它們的字段右側。如果字段寬度不足于以容納該字符串則字段的第一個“w”字符的字符串。 print "(a10)", str
X 這是用于空間輸出。這需要形式'nX',其中“n”是所需的空間數(shù)量。 print "(5x, a10)", str
/ 斜杠描述 - 用于插入空行。這需要的形式'/',并強制下一個數(shù)據(jù)輸出為一個新行。 print "(/,5x, a10)", str

以下符號用于格式描述符:

符號 描述
c 列數(shù)
d 右側的小數(shù)位數(shù)為真正的輸入或輸出
m 要顯示的最小位數(shù)
n 跳過的空格數(shù)
r 重復次數(shù) - 使用描述或組描述符的次數(shù)
w 字段寬度- 字符數(shù)用于輸入或輸出

示例 1

program printPi

   pi = 3.141592653589793238 
   
   Print "(f6.3)", pi 
   Print "(f10.7)", pi
   Print "(f20.15)", pi 
   Print "(e16.4)", pi/100 
   
end program printPi

當上述代碼被編譯和執(zhí)行時,它產(chǎn)生了以下結果:

3.142
3.1415927
3.141592741012573
0.3142E-01

實例 2

program printName
implicit none

   character (len=15) :: first_name
   print *,' Enter your first name.' 
   print *,' Up to 20 characters, please'
   
   read *,first_name 
   print "(1x,a)",first_name
   
end program printName

當上述代碼被編譯和執(zhí)行時,它產(chǎn)生了以下結果:(假設用戶輸入的名稱為 Zara)

Enter your first name.
Up to 20 characters, please
Zara 

實例 3

program formattedPrint
implicit none

   real :: c = 1.2786456e-9, d = 0.1234567e3 
   integer :: n = 300789, k = 45, i = 2
   character (len=15) :: str="Tutorials Point"
   
   print "(i6)", k 
   print "(i6.3)", k 
   print "(3i10)", n, k, i 
   print "(i10,i3,i5)", n, k, i 
   print "(a15)",str 
   print "(f12.3)", d
   print "(e12.4)", c 
   print '(/,3x,"n = ",i6, 3x, "d = ",f7.4)', n, d
   
end program formattedPrint

當上述代碼被編譯和執(zhí)行時,它產(chǎn)生了以下結果:

45
045
300789 45  2
300789 45  2
Tutorials Point
123.457
0.1279E-08

n = 300789 d = *******

Format語句

format語句允許混合并匹配字符,整數(shù)和實際輸出在一條語句中。下面的例子說明了這一點:

program productDetails 
implicit none 

   character (len=15) :: name
   integer :: id 
   real :: weight
   name = 'Ardupilot'
   id = 1
   weight = 0.08
   
   print *,' The product details are' 
   
   print 100
   100 format (7x,'Name:', 7x, 'Id:', 1x, 'Weight:')
   
   print 200, name, id, weight 
   200 format(1x, a, 2x, i3, 2x, f5.2) 
   
end program productDetails

當上述代碼被編譯和執(zhí)行時,它產(chǎn)生了以下結果:

The product details are
Name:       Id:    Weight:
Ardupilot   1       0.08