如何确保fopen()相对于可执行文件而不是C ++中的当前目录打开文件?

时间:2016-12-18 05:56:30

标签: c++ fopen

我在Windows 7上使用MinGW编译的C ++程序调用fopen(),指定具有相对路径的文件。如果你在它自己的目录中运行可执行文件,该程序工作正常,但我注意到如果我在另一个目录中使用命令行运行程序,fopen()将找不到指定的文件。例如,如果我的可执行文件“foo.exe”和指定文件“bar.txt”位于“C:\ project \ build \”中,并且我在“C:\ project \”中运行exe,则fopen()将找不到文件。使用代码或编译器标志是否有一些解决方法?

1 个答案:

答案 0 :(得分:5)

我可以看到这对于访问相对于可执行文件的指定位置的资源是必要的,尽管没有可执行文件本身的绝对路径。我建议获取可执行文件的绝对路径,可能使用Get path of executable中描述的方法之一,然后将进程的工作目录更改为可执行文件的父目录,或构建文件的绝对路径您想通过解析您对该目录的相对路径来打开。然后,您可以将结果传递给fopen()