2017-09-15 5 views
1

私は、READ文がFortranでどのように機能するかを理解しようとしています。私は(Macを使用し)、端末上でこれを実行するFortranランタイムエラー:ファイルの末尾

program main 
integer a,b,c 

open(unit=10,file='test.txt',status='old') 
read(10,*)a,b,c 
print*,a,b,c 
close(10) 
end program main 

:これを行うために、私は次の簡単なプログラムを書いているのgfortran Main.f95。オープンa.outの

私は次のエラーを取得する:ファイルMain.f95の5行目(単位= 10、ファイル= 'test.txtの')で Fortranのランタイムエラー:ファイルの終わり

私はしました私はこれを行うと

program main 
integer a,b,c,IOstatus 

open(unit=10,file='test.txt',status='old') 
read(10,*,IOstat=IOstatus)a,b,c 
print*,a,b,c,IOstatus 
close(10) 
end program main 

は、プログラムが正常に実行され、次のように、すべてのウェブ周りのソリューションを探したとREAD指定子内部の追加IOSTAT = ...の提案に出くわしました。ただし、printコマンドは "2 0 1 -1"と表示します。これは、test.txtファイルに "1,2,3"が含まれていると誤っています。

私は、ここやそこを調整しようとしましたが、うまくいきませんでした。私は非常にシンプルでなければならないことをしようとしています:.txtファイルから整数のリストを読み込みます。私が間違っていることについての助けは、大いに感謝しています。

+0

どのコンパイラのバージョンを使用していますか?私が正常にgfortran 5.4 –

+0

であなたの初期コードを実行することができます。すべての 'iostat'はここではかなり明確なエラーメッセージを抑制し、代わりに何らかの読み取りエラーを示す整数フラグ' -1'を与えます。 – agentp

+0

あなたのテキストファイルが実際にテキストファイルであることは確かですか?どのエディタを使用しますか? – agentp

答えて

2

あなたの問題は、Fortranコードではなくtext.txtファイルと関連していると思います。それに行末の文字を追加(入力)してみてください。 gfortran 5.4で元のコードを正常に実行しました。

詳細については、thisを参照してください。

+0

ご意見ありがとうございます。私のtest.txtファイルは単に "1,2,3"です。私は "3"の最後にエンターを追加しました。それでも私は同じエラーを与えています。どのテキストファイルを使用しましたか? おそらく、それは私のバージョンのgfortranによるものでしょうか?私はバージョン6.3を持っています。 –

+0

私はあなたが記述したのと同じテキストファイルを使用しました: '1,2,3'は3の最後に入力してください。あなたのテキストエディタがファイルの保存時に何か変なことをしている可能性があります。別のエディタで試してみて、何が起こるか見てみましょう。 –

+0

ところで、テキストファイルに '' 'という文字は含まれていませんか? –

関連する問題