1

IntelifortからIBMxlfに移行しようとしていますが、「フォーマットされていない出力データ」(フォーマットされていない、つまり同じ長さではない)を読み取るときに問題が発生します。次に例を示します。

program main
implicit none
real(8) a,b
open(unit=10,file='1.txt')
read (10,*) a
read (10,*) b
write(*,'(E20.14E2)'),a,b
close(10)
end program

1.txt:

0.10640229631236
8.5122792850319D-02

ifortを使用すると、出力が得られます。

0.10640229631236E+00
0.85122792850319E-01

xlfを使用して出力を取得します:

' in the input file.  The program will recover by assuming a zero in its place.e invalid digit '
0.10640229631236E+00
0.85122792850319E-01

1.txtのデータはフォーマットされていないため、固定フォーマットを使用してデータを読み取ることはできません。この警告を解決する方法を知っている人はいますか?

4

1 に答える 1

0

(質問はコメントで回答されました。回答のない質問を参照してください。ただし、コメントで問題が解決されました(またはチャットで拡張されました)

@MSBは書いた:

入力ファイルにアポストロフィがありますか?または、数字、小数点、「D」以外の文字はありますか?あなたの読み取りは「リスト指向」です。

OP Wrote:

はい、0.10640229631236の後に、この警告が発生する文字があるようです。これらの番号を手動で新しいファイルに書き込むと(エンターキーで0.10640229631236の後の行を変更)、この警告は消えます。私はcat -vこれらの2つのファイルを使用します。警告ファイルを使用すると0.10640229631236^M 8.5122792850319D-02を取得し、警告ファイルを使用しない場合は0.10640229631236 8.5122792850319D-02を取得します。Mが何を表し、どこから来ているか知っていますか?

@agentpはリンクを与えました:

行末の「^M」文字

これは、^MがキャリッジリターンのWindows文字であることを説明しています

于 2015-01-25T17:55:34.877 に答える