open语句中的status子句显示奇怪的行为

时间:2012-09-28 10:29:00

标签: fortran95

嗨,这是我的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。根据他(第219页)status='replace'子句将打开一个名为fun的新文件。如果有任何具有此类名称的文件,则将其删除。但是我在存储Fortran程序的主目录中创建了文件fun,然后运行了该程序。它确实创建了一个名为f的新文件。文件fun未删除。所以我不明白这种行为......任何帮助都赞赏......

1 个答案:

答案 0 :(得分:3)

您已将变量filename声明为类型character。由于您没有指定长度,编译器会将其理解为长度为1,因此您的作业

filename="fun"

导致filename的值为f。将您的变量声明更改为

character(len=3) :: filename

或者,可能更好,

character(len=:), allocatable :: filename

后一版本使用现代(2003年及以后我认为)Fortran的自动分配功能。