【问题标题】:How do I open a C file with a relative path? [closed]如何打开具有相对路径的 C 文件? [关闭]
【发布时间】:2011-04-15 21:25:04
【问题描述】:

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

任何帮助将不胜感激

【问题讨论】:

  • 显示您打开该文件的代码。

标签: c directory


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    如果 test.txt 位于 c:\code\app\src 并且您的应用程序位于 c:\code\app 中,则相对路径“..\src\test.txt”将结束于 c:\ code\src\test.txt(如果从资源管理器启动)。

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

    【讨论】:

      【解决方案3】:

      假设你的目录结构如下:

      项目 +---src |测试.txt |项目.c \---斌 a.out

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

      如果你真的是说文件在你所说的一个目录中,像这样:(注意:这是一个尴尬的项目结构)

      项目 \---src |测试.txt |项目.c \---斌 a.out

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

      项目 |测试.txt +---src |项目.c \---斌 a.out

      那么你需要的路径是"../test.txt" 或者等价的"../../project/test.txt"

      更好的位置是在数据目录中,所以你的路径是"../data/test.txt"

      【讨论】:

      • 废话!为什么我的标签不能正常工作?
      【解决方案4】:

      我猜这是一个 windows VS vbuild(给定反斜线路径)

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

      所以

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

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

      【讨论】:

        猜你喜欢
        • 2016-06-24
        • 2011-04-28
        • 1970-01-01
        • 1970-01-01
        • 2012-02-26
        • 2016-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多