1

こんにちは、ここに私のFortranコードがあります

program test

implicit none

INTEGER :: ierror
character:: filename

filename="fun"


open(unit=25,file=filename ,status="replace",action="write", &
           iostat=ierror)


              write(*,*)ierror

end program test 

Chapman の本を使って Fortran 95-2003 を学んでいます。彼 (page 219) によると、status='replace'節は という名前の新しいファイルを開きますfun。そのような名前のファイルがあれば、それは削除されます。funただし、Fortran プログラムが格納されているホーム ディレクトリにファイルを作成し、このプログラムを実行しました。という名前の新しいファイルを作成しましたf。ファイルfunは削除されませんでした。だから私はこの振る舞いを理解していません....助けていただければ幸いです......

4

1 に答える 1

3

variablefilenameが type を持つように宣言しましcharacterた。長さを指定していないため、コンパイラは長さが 1 であると理解するため、割り当ては

filename="fun"

filename値を持つことにつながりますf。変数の宣言を次のように変更します

character(len=3) :: filename

または、おそらくより良い、

character(len=:), allocatable :: filename

後者のバージョンは、最新の (2003 年以降だと思います) Fortran の自動割り当て機能を使用します。

于 2012-09-28T11:45:23.143 に答える