嗨,这是我的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
未删除。所以我不明白这种行为......任何帮助都赞赏......
答案 0 :(得分:3)
您已将变量filename
声明为类型character
。由于您没有指定长度,编译器会将其理解为长度为1,因此您的作业
filename="fun"
导致filename
的值为f
。将您的变量声明更改为
character(len=3) :: filename
或者,可能更好,
character(len=:), allocatable :: filename
后一版本使用现代(2003年及以后我认为)Fortran的自动分配功能。