2016-10-16 4 views
1

私はFortranを使用して、CFDの浅瀬ソフトウェアで使用するサブルーチンを作成しています。テキストファイルから数値を読み取ることができません

私が読んで、格納された値を使用するには、このコードを書かれています。

PROGRAM hieto 

! Calcula la precipitacion efectiva en funcion del tiempo 
!IMPLICIT NONE 

real::a 

!Abrir CSV 
!OPEN(UNIT=10,FILE="datos.txt",FORM="formatted",STATUS="replace",ACTION="readwrite",ACCESS='sequential') 
open(unit=10, file='datos.txt') 

!Leer el archivo 
read(10, *, iostat=ios)a 
print*,ios 
print*, a 
close (UNIT=10) 

END PROGRAM hieto 

マイテキストファイルdatos、この

のように見えます
1 

2 

3 

私はそのままのコードを実行すると、私は次の出力

-1 
0.0000000000 
Process return 0 (0x0) execution time: 0.002 s 

を取得した行1の最初の数です。 1つはゼロではないので、なぜこのようなことが起こるのか分かりません。

そして、私はREAD文からiostat=iosを削除した場合、私は次のエラーを取得する:

At ine 13 (the line od the read stament) of file /home/Dropbox/scripts_tesis/fortran/hieto_telemac.f90 (unit=10, file=datos.txt') 
Fortran runtime error: end of file. 
Proceess returned 2 (0x2) 

私は私が読ん文でend=3を追加しようとしたので、ここではいくつかの答えを読んだことがある、とも私のテキストを終了します最後に空白行があるファイル。 end=3は、3が定義されたラベルではないというエラーを返し、テキストファイルに空の行を置くことは何もしません。

私はUbuntuのLTSに16.04とのgfortranコンパイラを使用しています。

+0

答えてくれてありがとうしかし、私はこの上に読んでなかった、と私は、ファイルの終わり(EOF)まで読みするにはどうすればよいでしょうか?このWiki Fortranの一部(http://fortranwiki.org/fortran/show/FAQ)。私はそれを実行させるためにコードを変更しましたが、以前これを試みました。 –

答えて

4

ファイルが空である場合はどうなりますか。

は、そのディレクトリ内のdatos.txtというファイルが実際に存在していることを確認します。正確な名前に注意してください。 datos.txtとちょうどdatosは同じものではありません。

STATUS="replace"を含むコメント付きコマンドを使用して以前に開こうとした場合、古いファイルはに置き換えられ、になります。

、ファイルが空であるので、あなたは便利な本当の何もしませんでした。 iostatが0でなく、-1の場合、読み取られる変数の値は未定義です。したがって、aは未定義です。あなたのファイルが空であるために、もう一度。あなたがどこかにスタックオーバーフローでそれを見たので

また、あなただけ盲目的にあなたのコードでend=3を置くことはできません。あなたはまずそれが何をすべきかを理解しなければなりません。 iostat=end=を組み合わせる理由はありません。 iostatで十分です。

+0

ありがとう、私はこれらの事を試みます。 –

+0

それは私が私のdirを間違えていた働いたok。再度、感謝します。 –

+0

あなたの投稿をどのように編集したか見てみましょう。 "I"という言葉には大文字を使ってください。カンマ( '、')の前にスペースを入れないでください。文章を大文字で始める。あなたの母国語にも同様の規則があると確信しています。 –

関連する問題