2

我正在编写一个 fortran 程序,我想知道是否可以从放置程序本身的同一目录中打开文件。

我正在使用 Ubuntu 12.04 顺便说一句。

例如,如果我将编译后的程序放在目录“/home/username/foo”,我希望程序打开文件“/home/username/foo/bar.txt”并写“Hello!” 在里面。

我的最小工作示例如下:

program main

implicit none

open(unit=20,file="bar.txt",action="write")

WRITE(20,*) "Hello!"

close(20)

end program main

当我使用 gfortran 编译时,无论我将程序文件放在哪里,它都会打开并写入文件“/home/username/bar.txt”。

另一方面,当我为 Windows 编译它(使用 mingw)制作一个 .exe 文件并在 Windows 中执行它时,它会执行我想要的操作,它会打开放置可执行文件的文件。

[编辑] 我刚刚发现,如果我通过双击执行程序,它会在程序目录中打开文件,但是当我从终端执行它时,它会在“/home/username/”打开,所以可能更多关于我从终端发送命令的方式,目前我正在通过以下命令“/home/username/foo/myprogram”来执行此操作。

4

1 回答 1

1

我也在运行带有 gfortran 4.6.3 的 Ubuntu 12.04,但我没有遇到这种情况。我将我的可执行文件放在哪里,bar.txt执行后就在哪里。

也就是说,如果您想要在特定位置的文件,则声明一个字符串,如下所示:

character(26) :: filename
filename="/home/username/foo/bar.txt"

然后将文件打开为

open(unit=20, file=filename)

你回家了。

编辑

我刚刚注意到你的编辑。我想你打开终端并且不要cd到可执行文件的位置,而是运行命令来执行。这确实会导致您始终在当前所在的任何文件夹中打开文件。

于 2013-08-27T02:22:52.940 回答