2012-03-05 41 views
3

包含我的主要可執行文件的文件夾與輸入,輸出和源文件非常混雜。我想將這些文件中的一些文件移動到我的可執行文件的不同目錄中,但仍然可以訪問它們。如果我可以創建一個目錄,例如./main/outfile,它會保存我的程序中的所有輸出文件,那將是太棒了。在Fortran 77/90中訪問這些文件時是否可以包含路徑?訪問主程序子目錄中的文件

如果編譯器是重要的,我使用在Ubuntu 11.10上運行的gfortran。

回答

7

對於輸入/輸出文件,只需在打開文件時指定路徑即可。例如:

open(unit=3,file='outputdata/data_modified.txt',status='unknown') 

將在outputdata文件夾中打開文件。請注意,outputdata文件夾必須事先存在,否則您可能會遇到錯誤。

+0

您應該強調在調用該命令之前,應該存在'outputdata'目錄。至少在ifort的情況下,如果我嘗試在不存在的目錄中寫入文件,則會出現「文件未找到」錯誤。 – Chris 2012-03-06 09:54:47

+0

如何在MAIN結尾包含語句?我不認爲'包含'接受路徑輸入。我有一個非常長的包含語句列表,這意味着我有很多包含文件混淆了我的MAIN所在的同一個目錄。我是否應該將所有這些子例程複製並粘貼到一個.f文件中以包含在最後的程序? – kxk7607 2012-03-06 16:47:10

+0

@ kxk7607不,不要那樣做。相同的路徑方法也適用於包含文件。你可以把一個包含文件放在includefiles文件夾中,並在你的主程序中用include includefiles/statements.inc指定。 – bananafish 2012-03-06 19:44:16

2

運行時的起始目錄不是主程序恰好駐留的目錄,而是啓動程序時的當前目錄。

例如

mkdir run_N && cd run_N && ../my_program 

將讀取並寫入當前目錄(./run_N)文件,即使該應用程序二進制文件是在另一個目錄。

+0

我的印象是,MAIN生成了一個在MAIN所在的目錄下創建的a.out(或其他指定的可執行輸出)。我是否理解將a.out移動到桌面,不允許程序正確執行?原諒我,我仍然在我的FORTRAN嬰兒期。 – kxk7607 2012-03-06 17:07:14