如何使用相对路径打开C文件?

时间:2010-09-22 17:58:02

标签: c directory relative

我正在尝试解析txt文件,我想相对于我当前的目录位置引用它。如果我完全放入文件路径它将工作但我尝试使用 .. \ src \ test.txt它找不到它。这不是在一个目录中引用文件的正确方法吗?

任何帮助将不胜感激

4 个答案:

答案 0 :(得分:11)

如果将“.. \ src \ test.txt”放在字符串常量中,则需要将所有反斜杠加倍,以使“\ t”和“\ s”不被解释为转义序列。 (或者你可以使用正斜杠,这样更便携。)

答案 1 :(得分:3)

取决于当前工作目录的设置。默认情况下,如果从资源管理器中双击应用程序,则可执行文件所在的目录,或者从命令提示符启动时,shell所在的当前路径。

如果test.txt在c:\ code \ app \ src中,而你的应用程序在c:\ code \ app中,则相对路径“.. \ src \ test.txt”将以c:\结尾code \ src \ test.txt(如果从资源管理器启动)。

在尝试打开文件之前尝试打印_getcwd的输出,以验证当前工作目录是什么目录。

答案 2 :(得分:1)

假设你的目录结构如下:

project
 +---src
 |       test.txt
 |       proj.c
 \---bin
         a.out  <- Working directory  

你的相对路径是正确的;您的工作目录实际上与文本文件处于同一级别。

如果你真的是说文件是你所说的一个目录,就像这样:(注意:这是一个笨拙的项目结构)

project
\---src
    |   test.txt
    |   proj.c
    \---bin
            a.out  

或者像这样:(更有意义)

project
|   test.txt
+---src
|       proj.c
\---bin
        a.out  

然后您需要的路径是"../test.txt"或等同于"../../project/test.txt"

更好的位置将位于数据目录中,因此您的路径为"../data/test.txt"

答案 3 :(得分:0)

我猜这是一个Windows VS vbuild(给出后面的斜线路径)

VS会将二进制文件放在project \ bin \ debug之类的内容中。当你在VS中运行它时,它会将当前的WD设置为二进制文件的位置。

所以

a)将文件复制到正确的位置

b)更改项目属性调试设置,将当前路径设置为您希望文件所在的位置(相对)