2013-08-27 2 views
2

Я пишу программу fortran, и я хотел бы узнать, можно ли открыть файл из того же каталога, где размещена сама программа.Fortran Open из текущего каталога

Я использую Ubuntu 12.04 BTW.

Например, если я поместил скомпилированную программу в каталог «/ 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 и выполнив его в окнах, он делает то, что я хочу, он открывает файл, в который помещается исполняемый файл.

[EDIT] Я только что узнал, что если я запустил программу, дважды щелкнув по ней, он откроет файл в каталоге программы, но когда я его запустил из терминала, он откроется в «/ home/username /», поэтому возможно, это больше о том, как я отправляю команду из терминала, в настоящее время я делаю это с помощью следующей команды «/ home/username/foo/myprogram».

+0

Удалите txt-файл, cd в другой каталог, используйте pwd, чтобы узнать, где вы находитесь, запустите свою программу и сообщите нам, что происходит , – cup

ответ

1

Я тоже бегу Ubuntu 12.04 с gfortran 4.6.3, но я не испытываю этого. Где бы то ни было, что я помещаю свой исполняемый файл, после выполнения он выполняет bar.txt.

Тем не менее, если вы хотите файл в определенном месте, а затем объявить строку символов следующим образом:

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

, а затем открыть файл как

open(unit=20, file=filename) 

и вы дома бесплатно ,

EDIT

Я просто заметил, правку. Я предполагаю, что вы открываете терминал и не делаете cd по месту выполнения исполняемого файла, но запустите команду для выполнения. Это действительно заставит вас всегда открывать файл в любой папке, в которой вы сейчас находитесь.

+0

Спасибо, за быстрый и полный ответ, я подключился к местоположению, и он сработал. –

Смежные вопросы