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 

我正在使用查普曼的书来学习 Fortran 95-2003。据他说(第 219 页)status='replace'子句将打开一个名为fun. 如果有任何具有该名称的文件,则将其删除。但是我在fun存储 Fortran 程序的主目录中创建了该文件,然后运行了该程序。它确实创建了一个名为 的新文件f。该文件fun未被删除。所以我不明白这种行为....任何帮助表示赞赏......

4

1 回答 1

3

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

filename="fun"

导致filename具有价值f。将变量声明更改为

character(len=3) :: filename

或者,可能更好,

character(len=:), allocatable :: filename

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

于 2012-09-28T11:45:23.143 回答