Fortran 90 - I/O传递变量作为文件路径

Chr*_*isO 3 io fortran fortran90

这似乎应该是一个简单的解决方案,但搜索了几个小时后,我找不到解决方案.

我想将文件路径保存为字符变量,然后在I/O语句中使用该变量.下面是我从"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
    ......
Run Code Online (Sandbox Code Playgroud)

该程序编译(使用NetBeans IDE的gfortran编译器),但是当我运行时,我将错误打印到屏幕上.

注1:当我将文件路径直接放入open函数时,如下所示,它似乎工作正常

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

注意2:我在filepath变量中尝试了前向/后向,单/双斜线的所有变体,所以我不认为这是问题所在.当我将"filepath"作为调试机制打印到屏幕上时(在上面的打开函数之前),所有返回的都是"C".所以出于某种原因,似乎我正在丢失文件路径的其余部分.(在我研究之前,我会留下关于什么斜杠方法适当的问题)

我很感激任何建议.

谢谢,克里斯

eri*_*ous 8

您已声明filepath为长度为1的字符变量.将声明更改为类似character(80):: filepath(使用足够长的长度以包含整个路径).