2017-09-01 8 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データ記述子を探しています。これは 'scientific notation`で出力を書き込みます。これは、10進数の前の単一の先頭桁を意味します。一方

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 
関連する問題