Fortran 90 — Ввод-вывод, передающий переменную как путь к файлу

#io #fortran #fortran90

#io #фортран #fortran90 #fortran

Вопрос:

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

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

 character:: filepath
filepath='c:userschris...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 с использованием NetBeans IDE), но при запуске я получаю сообщение об ошибке, выведенное на экран.

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

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

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

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

Спасибо, Крис

Ответ №1:

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

Комментарии:

1. Достаточно точно. Ошибка новичка на Fortran 🙂 Спасибо за быстрый ответ.