2017-09-01 230 views
1

這是我的代碼:從.txt文件中讀取和寫入.txt文件

Program Input_Output 

Implicit none 

Integer::i 
Real::R_sn,X_sn,G_sn,B_sn 

Open(Unit=2,File='Input.txt',Status='Unknown') 

    Read(2,'(4(1x,En8.2))')R_sn,X_sn,G_sn,B_sn 

Close(Unit=2,Status='Keep') 

Open(Unit=4,File='Ouput.txt',Status='Unknown') 

    Write(4,'(4(1x,En8.2))')R_sn,X_sn,G_sn,B_sn 

Close(Unit=4,Status='Keep') 

End Program Input_Output 

文件Input.txt的內容是:

2.09E-01 1.17E-01 0.00E-00 1.16E-04

文件Output.txt的內容是:

******** ******** 0.00E+00 ********

我的這段代碼的意圖是從文件中讀取一些數字,然後我想從用於讀取的文件形式的其他文件中寫入數字。 寫在Output.txt文件有什麼問題?

+0

描述符中的字段太短(字符太少)。只需使用(*,*)或更多字符。很多重複,無法從我的手機搜索。 –

+0

我想將En8.2格式的數字寫入'Outpu.txt'。使用(*,*)我得到了f描述符形式的數字 –

回答

4

您正在尋找以'科學記數法'寫入輸出的ES數據描述符。這意味着小數點前的一位前導數字。

write(*,"(4(1x,es8.2))" R_sn, X_sn, G_sn, B_sn 
!! output: 2.09E-01 1.17E-01 0.00E+00 1.16E-04 

在另一方面,對於EN,或「工程記」,你正在寫(最多)小數點前3個領先的數字。因此,您需要擴展輸出字段(由@VladimirF建議):

write(*,"(4(1x,en10.2))" R_sn, X_sn, G_sn, B_sn 
!! output: 209.00E-03 117.00E-03 0.00E+00 116.00E-06