Fortran 90 - переменная ввода / вывода в качестве пути к файлу - PullRequest
3 голосов
/ 08 ноября 2011

Кажется, это должно быть легко исправить, но после поисков в течение нескольких часов я не могу найти решение.

Я хочу сохранить путь к файлу как символьную переменную, а затем использовать переменную в операторе ввода / вывода. Ниже приведен мой код для чтения из файла, определенного как «filepath».

character:: filepath
filepath='c:\users\chris\...\data.txt'
open(unit=1,file=filepath,status='old',action='read',form='formatted',iostat=ierror)
    if(ierror.NE.0)then
        print*,'file cannot be opened or does not exist'
        read*,
    endif
    ......

Программа компилируется (компилятор gfortran с использованием IDE NetBeans), но при запуске выдает ошибку, выводимую на экран.

Примечание 1: Когда я помещаю путь к файлу непосредственно в функцию открытия, как показано ниже, кажется, что он работает нормально

open(unit=1,file='c:\\Users\\Chris\\...\\data.txt',status='old',action='read',form='formatted',iostat=ierror)

Примечание 2: я пробовал все варианты прямой / обратной, одинарной / двойной косой черты в переменной filepath, поэтому я не думаю, что это проблема. Когда я печатаю «filepath» на экран в качестве механизма отладки (до функции open, описанной выше), все возвращается «C». По какой-то причине кажется, что я теряю остальную часть пути к файлу. (Я оставлю свои вопросы относительно того, какой метод слеша уместен, пока я не исследую его подробнее)

Я ценю любые предложения.

Спасибо, Chris

1 Ответ

8 голосов
/ 08 ноября 2011

Вы объявили filepath как символьную переменную длины 1. Измените объявление на что-то вроде character(80):: filepath (используйте длину, достаточную для полного пути).

...