строки в фортране и имена файлов, использующие их - PullRequest
5 голосов
/ 24 марта 2011

вот в чем проблема ... я динамически создаю (скорее меняю) строку, содержащую цифры (числа) (например, имя файла out01.txt, out02.txt и т. Д.)

myпрограмма работает нормально (я использую последнюю обновленную строку значений, чтобы присвоить файлу имя и отредактировать этот файл) ... но в том же каталоге с командой "ls" я вижу, что файл создан, и через файловый браузер я могу получить к нему доступно из командной строки, используя vim, gedit, я не могу открыть его, открывается новый файл с тем же именем ... более того, я не могу удалить этот файл из командной строки (rm out010.txt 'нет такого файла или каталога), воткод, я не смог бы объяснить мою проблему, но код будет говорить сам за себя ...

program strtest
implicit none
 character(len=1024)::filen,format_str
 integer::i
 format_str="(a5,i0.3,'.txt')"
 do i=1,10 
  write(filen,format_str)'out',i
 end do
write(*,*)trim(filen)
open(23,file=trim(filen))
write(23,*)"what a mess!"
close(23)
stop
end program strtest

примечание: у меня та же проблема, даже без использования trim () в операторе открытия файла

объясните пожалуйста мою ситуацию !!

С уважением ...

Ответы [ 2 ]

7 голосов
/ 24 марта 2011

Как уже указывал @jonsca, проблема в лишних пробелах. Самый простой способ избавиться от него - использовать adjustl, например:

open(23,file=trim(adjustl(filen)))
7 голосов
/ 24 марта 2011

Ваши имена файлов выходят с двумя пробелами перед ними, поэтому, если вы введете rm " out01.txt" (2 пробела, out01.txt), вы сможете удалить их. Это a5, который отбрасывает строку формата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...